0

我已经将一些按钮的可见性绑定到一个布尔值,但是当布尔值改变时,按钮的可见性不会改变。为什么会这样?

布尔值设置如下:

public static readonly DependencyProperty editModeToggle = DependencyProperty.Register("editMode", typeof(bool), typeof(Window));
public bool EditMode
{
    get { return(bool)GetValue(editModeToggle); }
    set { SetValue(editModeToggle, value); }
}

我很确定绑定没有错。

[注意:我已经设置了一个可以工作的转换器并且绑定工作。当我从 true 更改为 false 时,可见性不会改变,反之亦然]

捆绑:

<Button Content="Test" Visibility="{Binding ElementName=mainWindow, Path=EditMode, Converter={StaticResource BooltoVisibilityConverter}/>
4

3 回答 3

1

当绑定无法按预期工作时,您需要检查一些事项:

  1. bool 属性是否使用 INotifyPropertyChanged 通知更改?
  2. 您是否使用转换器将布尔值转换为可见性?
  3. 您在输出窗口中看到任何绑定错误吗?
  4. 您是否尝试在 xaml 中的绑定或 bool 属性中的 setter 中设置断点?

正如您在评论中提到的,您尚未实现INotifyPropertyChanged接口。

实现接口的需要是每当 ViewModel 中的属性值发生变化时,都有一种方法可以让绑定知道这一点。因此,在实现INotifyPropertyChanged之后,对于每个属性,您都会引发带有属性名称的PropertyChanged事件。这样,绑定就知道属性的值已更改。

网上有很多文章。这是一个帮助您入门的方法:INotifyPropertyChanged 和 WPF

于 2012-08-15T07:06:36.853 回答
0

在这种情况下,您不需要 decyclone 列表中的第 1 点,因为您使用的是依赖项属性。我认为如果你没有它,你应该在绑定中添加 Mode=TwoWay ,这将解决它。

于 2012-08-15T07:29:44.163 回答
0

依赖属性注册不正确 -

    public static readonly DependencyProperty editModeToggle = 
DependencyProperty.Register("editMode", typeof(bool), typeof(Window));

它应该是-

public static readonly DependencyProperty editModeToggle = 
    DependencyProperty.Register("EditMode", typeof(bool), typeof(Window));

注意属性的拼写 -'E'应该是大写,因为它区分大小写,而您的属性名称EditMode不是editMode

于 2012-08-15T07:38:31.693 回答