2012-10-12 19 views
6

Tôi đang cố gắng thiết lập một ràng buộc đối với thuộc tính giao diện được triển khai rõ ràng từ mã phía sau. Lý do cho ràng buộc mã-đằng sau là đường dẫn đến thuộc tính bị ràng buộc chỉ có thể được xác định tại thời gian chạy.WPF - ràng buộc với thuộc tính giao diện được triển khai rõ ràng từ mã phía sau/hành vi được đính kèm

Trong XAML, nó có thể để ràng buộc thusly (ví dụ trong MainWindow.xaml):

<TextBox Text="{Binding (local:IViewModel.Property)}"/> 

và trên thực tế, ràng buộc trong các mã sau làm việc trong một cách tương tự (từ MainWindow.xaml.cs):

var binding = new Binding("(local:IViewModel.Property)"); 

vì WPF có thể nhận ánh xạ vùng tên.

Câu hỏi của tôi là, làm thế nào để tạo thành một ràng buộc như thế này khi ánh xạ vùng tên không có mặt (ví dụ, trong một hành vi đính kèm)?

Rất cám ơn trước!

Trả lời

9

Bạn sẽ chỉ định một đầy đủ PropertyPath:

var propertyInfo = typeof(IViewModel).GetProperty("Property"); 
var propertyPath = new PropertyPath("(0)", propertyInfo); 
var binding = new Binding 
{ 
    Path = propertyPath 
}; 

Để biết chi tiết về cú pháp truyền cho PropertyPath trên, thấy PropertyPath.Path.

+0

Hoàn hảo! Làm việc như một nét duyên dáng – mickeyt

+0

+1. Có thể bạn có thể gửi một liên kết đến một tham chiếu cú ​​pháp cho loại chỉ mục đặc biệt này. Tôi đã không nhìn thấy nó trước và không thể tìm thấy nó trong [PropertyPath XAML Syntax] (http://msdn.microsoft.com/en-us/library/ms742451.aspx) bài viết MSDN. Luôn nghĩ rằng nó phải sử dụng '[]'. – Clemens

+1

@Clemens: OK, đã cập nhật. –

Các vấn đề liên quan