我发现很少有解决方案假设我有2个或3个绑定对象(或数据模板) - 这对我来说不是一个好方法。是否有捷径可寻?我可以想到在可视树中循环并以这种方式设置绑定,但这个解决方案看起来仍然不是很整洁。
提前谢谢。
答案 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
}
}
但是如果您遇到在运行时更改绑定的需要,那么可能会改进您的整体设计!