我想将 Button IsEnabled 绑定到我的 ViewModel。所以我试了这个:
<Button Content="{Binding Icon}" Command="{Binding Connect}" IsEnabled="{Binding ConnectBtnEnable, Mode=TwoWay}" />
在视图中模型:
private bool _ConnectBtnEnable = true;
public bool ConnectBtnEnable
{
get { return _ConnectBtnEnable; }
set { _ConnectBtnEnable = value; OnPropertyChanged(); }
}
但是当我在使用中设置属性时:
public void Connect()
{
ConnectBtnEnable = false;
}
不行,有什么问题。提前感谢!
如果对按钮使用命令,建议不要单独绑定按钮的IsEnabled
属性。相反,您应该在命令的"CanExecute"方法实现中提供正确的值。这应该相应地启用或禁用该按钮。
可以参考本文以获取实现ICommand
示例 - https://www.codeproject.com/Tips/813345/Basic-MVVM-and-ICommand-Usage-Example
此外,若要更新控件 - 请确保更新 VM 的属性(不是成员字段(;以便触发通知更新,并更新绑定目标(控件状态(。
因为您需要设置ConnectBtnEnable
而不是_ConnectBtnEnable
.这是一个很好的示例,您应该以属性以外的其他方式命名私有字段。例如,_connectBtnEnable
.