2010-05-25 62 views
0

我發現了幾個解決方案,假設我有2個或3個綁定對象(或數據模板) - 這對我來說不是很好的解決方案。是否有捷徑可尋?我可以考慮通過可視化樹騎車,並設置綁定的方式,但這種解決方案看起來不太整潔。如何在運行時更改模板元素的綁定?

預先感謝您。

回答

1

您可以爲此更改綁定並將其附加到您想要更改綁定的UIElelement,爲此編寫一個自定義附加屬性。你現在要做的就是在綁定應該改變時觸發對附屬屬性的更改。在你附加的依賴項屬性改變eventhander你有權訪問UIElement。

<TextBlock local:Helper.DynamicBinding="{Binding SomeStatePropertyOfTheCurrentDataContext}" /> 

而且在改變的事件處理方法:

private void OnDynamicBindingChanged(DependencyObject sender, PropertyChangedEventArgs args) 
{ 
    var senderButton = sender as TextBlock; 
    if((args.NewValue as string) == "MainText") 
    { 
     // bind to the property "MainText" of the current datacontext now 
    } 
    else if((args.NewValue as string) == "OtherText") 
    { 
     // bind to the property "OtherText" of the current datacontext now 
    } 
} 

但是,如果你遇到需要改變在這樣的運行時綁定的,有可能你的整體設計可以改善!

+0

謝謝,它看起來像這將解決我的問題。我需要更改綁定,因爲我正在對用戶控件的綁定功能進行自動測試。 – Koynov 2010-05-25 14:23:34

相關問題