0
我发现了几个解决方案,假设我有2个或3个绑定对象(或数据模板) - 这对我来说不是很好的解决方案。是否有捷径可寻?我可以考虑通过可视化树骑车,并设置绑定的方式,但这种解决方案看起来不太整洁。如何在运行时更改模板元素的绑定?
预先感谢您。
我发现了几个解决方案,假设我有2个或3个绑定对象(或数据模板) - 这对我来说不是很好的解决方案。是否有捷径可寻?我可以考虑通过可视化树骑车,并设置绑定的方式,但这种解决方案看起来不太整洁。如何在运行时更改模板元素的绑定?
预先感谢您。
您可以为此更改绑定并将其附加到您想要更改绑定的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
}
}
但是,如果你遇到需要改变在这样的运行时绑定的,有可能你的整体设计可以改善!
谢谢,它看起来像这将解决我的问题。我需要更改绑定,因为我正在对用户控件的绑定功能进行自动测试。 – Koynov 2010-05-25 14:23:34