WPF按钮IsEnabled绑定失败

时间:2017-08-14 03:45:21

标签: c# wpf button binding

我想将Button IsEnabled绑定到我的ViewModel。所以我尝试了这个:

<Button Content="{Binding Icon}"  Command="{Binding Connect}" IsEnabled="{Binding ConnectBtnEnable, Mode=TwoWay}" />

在viewmodel中:

private bool _ConnectBtnEnable = true;
public bool ConnectBtnEnable 
{  
     get { return _ConnectBtnEnable; } 
     set { _ConnectBtnEnable = value; OnPropertyChanged(); } 
}

但是当我在使用中设置属性时:

public void Connect()
{ 
    ConnectBtnEnable = false;
}

它没有用,有什么问题。提前谢谢!

2 个答案:

答案 0 :(得分:1)

如果您使用按钮的命令,建议不要单独绑定按钮的IsEnabled属性。相反,您应该在命令的“CanExecute”方法实现中提供正确的值。这应该相应地启用或禁用按钮。

您可以参考此文章,了解示例ICommand实施 - https://www.codeproject.com/Tips/813345/Basic-MVVM-and-ICommand-Usage-Example

此外,要更新控件 - 请确保更新VM的属性(不是成员字段);这样就会触发通知更新,并更新绑定目标(控制状态)。

答案 1 :(得分:0)

因为您需要设置ConnectBtnEnable而不是_ConnectBtnEnable。这是一个很好的例子,您应该以不同于属性的方式命名您的私有字段。例如,_connectBtnEnable