2010-05-30 72 views
5

我有WPF應用程序和一個窗口。讓我們在我的XML是這樣的:代碼背後的綁定屬性

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

可以說,我不能夠不使用XML創造的BottomLabelTitleLabel。所以我必須在我的「後面的代碼」中創建BottomLabel作爲屬性。我如何在後面的代碼中爲Bottom標籤的Content屬性指定相同的綁定?它有可能嗎?

所以我有這樣的事情:

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? 
} 

我可以寫,而不是評論如何? 謝謝你的答覆。

回答

15

這裏是你如何定義和應用在代碼綁定:在對象上

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

注意,不從FrameworkElement派生,你必須明確地使用BindingOperations.SetBinding()代替element.SetBinding()

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

我想我必須使用'BindingOperations.SetBinding()'作爲我的目標對象的類型'AnimationTimeline'。我想我可以弄清楚如何做到這一點,但是您能否爲這種情況提供示例?至少對那些稍後會閱讀你的答案的人來說是有用的。謝謝。 – drasto 2010-05-30 13:06:47

+0

完成你的初始樣本,只需用你的時間線替換第一個參數,然後用DP綁定第二個參數(例如'Timeline.DurationProperty')。 – 2010-05-30 13:32:37

+0

如果我在控件的後面代碼中指定綁定並且控件的用戶通過xaml添加了綁定,會發生什麼情況? xaml綁定ovveride綁定後面的代碼還是將它們共存? – 2012-09-26 10:47:52

相關問題