使用Visibility与DataContext在Button中不起作用

时间:2011-03-01 14:29:33

标签: wpf xaml data-binding datacontext

我有一个Button,我试图添加一个绑定到某个路径的Visibility属性。在大多数情况下,此路径将被调用,并返回Visibilty(隐藏或可见)。如果我有一个按钮将DataContext设置为不同的绑定路径并尝试添加Visiblity内容,则不会调用visibilty绑定路径。如果我删除DataContext,那么Visibilty工作正常。这有什么工作吗?为什么会这样?非常感谢你。

<Button Visibility="{Binding Path=ThisButtonVisibility}"
        DataContext="{Binding Path=ThisButtonDataContext}"

3 个答案:

答案 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并且一次又一次......;)