如何在运行时更改模板元素的绑定?

时间:2010-05-25 13:28:46

标签: wpf silverlight xaml

我发现很少有解决方案假设我有2个或3个绑定对象(或数据模板) - 这对我来说不是一个好方法。是否有捷径可寻?我可以想到在可视树中循环并以这种方式设置绑定,但这个解决方案看起来仍然不是很整洁。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

您可以为此编写自定义附加属性,以更改绑定并将其附加到要更改绑定的UIElelement。您现在要做的就是在绑定应该更改时触发对附加属性的更改。在附加的依赖项属性的属性更改事件中,您可以访问UIElement。

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

在改变的eventhandler方法中:

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

但是如果您遇到在运行时更改绑定的需要,那么可能会改进您的整体设计!