2010-05-30 39 views
5

Tôi có ứng dụng WPF và một cửa sổ trong đó. Cho phép có một cái gì đó như thế này trong xml của tôi:Thuộc tính ràng buộc trong mã phía sau

<Label Name="TitleLabel" Content="Some title" \> 
<Label Name="BottomLabel" Content="{Binding ElementName=TitleLabel Path=Content"> 

phép nói rằng tôi không không thể sử dụng xml để tạo BottomLabelTitleLabel. Vì vậy, tôi phải tạo BottomLabel làm thuộc tính trong "Mã phía sau" của tôi. Làm cách nào để chỉ định cùng một ràng buộc cho thuộc tính Content của Nhãn dưới cùng trong mã của tôi? Có thể ở tất cả ?

Vì vậy, tôi sẽ có một cái gì đó như thế này:

public Label TitleLabel {get; private set;} 
public Label BottomLabel {get; private set;} 

public MyClass(){ 
    TitleLabel = new Label(); 
    TitleLabel.Content = "Some title"; 
    BottomLabel = new Label(); 
    BottomLabel.Content = // ?? what should be here ? How do I specify the binding 
          // that binds BottomLabel.COntent to TitleLabel.Content? 
} 

Tôi có thể viết gì thay vì nhận xét? Cảm ơn bạn đã gửi ansvers.

Trả lời

15

Đây là cách bạn xác định và áp dụng một ràng buộc trong mã:

Binding binding = new Binding { 
    Source = TitleLabel, 
    Path = new PropertyPath("Content"), 
}; 
BottomLabel.SetBinding(ContentControl.ContentProperty, binding); 

Lưu ý rằng trên các đối tượng mà không xuất phát từ FrameworkElement, bạn phải sử dụng một cách rõ ràng BindingOperations.SetBinding() thay vì element.SetBinding():

BindingOperations.SetBinding(BottomLabel, ContentControl.ContentProperty, binding); 
+0

Tôi đoán rằng tôi sẽ phải sử dụng 'BindingOperations.SetBinding()' làm đối tượng đích của tôi là kiểu 'AnimationTimeline'. Tôi nghĩ rằng tôi có thể tìm ra cách để làm điều đó nhưng bạn có thể vui lòng cung cấp ví dụ cũng cho kịch bản này? Ít nhất nó sẽ hữu ích cho những người sẽ đọc câu trả lời của bạn sau. Cảm ơn bạn. – drasto

+0

Thực hiện với mẫu ban đầu của bạn, chỉ cần thay thế tham số đầu tiên với dòng thời gian của bạn và thứ hai với DP để liên kết (ví dụ: 'Timeline.DurationProperty'). –

+0

Điều gì sẽ xảy ra nếu tôi chỉ định một ràng buộc trong mã phía sau để kiểm soát và người dùng điều khiển thêm một ràng buộc qua xaml? Liệu các ràng buộc xaml có thể mở ra mã phía sau ràng buộc hay chúng sẽ cùng tồn tại? –

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