我有一个使用bool启用或禁用的按钮,我正在使用MVVM:
按钮:
<Button x:Name="backButton" Content="Back" Command="{Binding BackCommand}"
IsEnabled="{Binding Path=BackBool, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"/>
布尔:
public bool BackBool
{
get { return isBackEnabled; }
set
{
this.RaisePropertyChangedEvent("isBackEnabled");
isBackEnabled = value;
this.RaisePropertyChangedEvent("isBackEnabled");
}
}
我已将bool添加到变量监视器中,并且当应启用按钮时,它会正确更新并更改为true。
然而,他们自己的按钮不会更新并始终保持禁用状态。
我错过了什么吗?
答案 0 :(得分:4)
使用其值已更改的属性的名称提升PropertyChanged
。您在XAML中给Binding
提供了一条适用的信息:字符串&#34; BackBool&#34;。
public bool BackBool
{
get { return isBackEnabled; }
set
{
isBackEnabled = value;
this.RaisePropertyChangedEvent("BackBool");
}
}
此外,省略绑定中的no-op标志。永远不要在绑定上设置属性,直到您在MSDN上查找它并找出它的作用。在Stack Overflow上节省了大量的责任,并且你自己的很多时间都在测试那些无法改变的变化。
<Button
x:Name="backButton"
Content="Back"
Command="{Binding BackCommand}"
IsEnabled="{Binding Path=BackBool}"
/>
答案 1 :(得分:1)
修改后的代码版本
按钮:
<Button x:Name="backButton" Content="Back" Command="{Binding BackCommand}"
IsEnabled="{Binding Path=BackBool, Mode=OneWay}"/>
布尔:
public bool BackBool
{
get { return isBackEnabled; }
set
{
isBackEnabled = value;
this.RaisePropertyChangedEvent("BackBool");
}
}