我有一个Button,我试图添加一个绑定到某个路径的Visibility属性。在大多数情况下,此路径将被调用,并返回Visibilty(隐藏或可见)。如果我有一个按钮将DataContext设置为不同的绑定路径并尝试添加Visiblity内容,则不会调用visibilty绑定路径。如果我删除DataContext,那么Visibilty工作正常。这有什么工作吗?为什么会这样?非常感谢你。
<Button Visibility="{Binding Path=ThisButtonVisibility}"
DataContext="{Binding Path=ThisButtonDataContext}"
答案 0 :(得分:0)
当您在Button上设置DataContext并在按钮的“内部”数据绑定之后进行操作时,Binding相对于刚刚设置的DataContext。因此它搜索Property ThisButtonDataContext.ThisButtonVisibility。
通常,Button从其父级继承DataContext,但是当你设置显式另一个时,它将不再找到重叠的DataContext。
所以简单地说:datacontext在元素本身已经有效,而不仅仅在其内容中。
那你可以做什么: 移动对象ThisButtonDataContext中的可见性,它可以正常工作
答案 1 :(得分:0)
将绑定更改为
<Button Visibility="{Binding Path=ThisButtonDataContext.ThisButtonVisibility}"
DataContext="{Binding Path=ThisButtonDataContext}"
答案 2 :(得分:0)
绑定使用DataContext作为隐式源。所以你的赋值是不正确的,因为Binding表达式将查找DataContext,它绑定到DataContext以查找DataContext,它是Binding并且一次又一次......;)