【问题标题】:WPF Button IsEnabled Binding failedWPF 按钮 IsEnabled 绑定失败
【发布时间】:2018-01-21 20:35:49
【问题描述】:

我想将 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;
}

不行,请问是什么问题。提前致谢!

【问题讨论】:

    标签: c# wpf button binding


    【解决方案1】:

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

    您可以参考这篇文章以获取示例 ICommand 实现 - https://www.codeproject.com/Tips/813345/Basic-MVVM-and-ICommand-Usage-Example

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 谢谢,但即使我改成ConnectBtnEnable 还是不行。
      • @BarryLib 在您的问题中添加更多详细信息。您确定按钮的数据上下文是包含ConnectBtnEnable 属性的视图模型吗?显示OnPropertyChanged方法的代码。
      猜你喜欢
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-04
      • 1970-01-01
      • 1970-01-01
      • 2015-07-12
      • 1970-01-01
      相关资源
      最近更新 更多