2010-05-25 55 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

相关问题