c# - 复选框绑定(bind) WPF

标签 c# wpf

我有 3 个复选框。让我们称它们为 cb1cb2cb3。当检查cb1cb2 时,应该检查cb3。我如何在 WPF 中实现它?我是 WPF 的新手。 提前致谢。

最佳答案

如果您使用的是 ViewModel,只需向其添加一个新的计算属性即可。

一个简单的 View 模型如下所示:

public class MyVieWModel : INotifyPropertyChanged
{
    private bool _cb1Checked;
    private bool _cb2Checked;

    public bool CB1Checked
    {
        get { return _cb1Checked; }
        set
        {
            _cb1Checked = value;
            PropertyChanged(this, new PropertyChangedEventArgs("CB1Checked"));
            PropertyChanged(this, new PropertyChangedEventArgs("CB3Checked"));
        }
    }

    public bool CB2Checked
    {
        get { return _cb2Checked; }
        set
        {
            _cb2Checked = value;
            PropertyChanged(this, new PropertyChangedEventArgs("CB2Checked"));
            PropertyChanged(this, new PropertyChangedEventArgs("CB3Checked"));
        }
    }

    public bool CB3Checked
    {
        get { return _cb1Checked && _cb2Checked; }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    [NotifyPropertyChangedInvocator]
    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

设置CB1CheckedCB2Checked后,需要引发CB3Checked也发生变化的事件。

您的 XAML 看起来像(这是来自内存...):

<CheckBox IsChecked={Binding CB1Checked}" />
<CheckBox IsChecked={Binding CB2Checked}" />
<CheckBox IsChecked={Binding CB3Checked, Mode=OneWay}" />

正如@wkl 在评论中指出的那样,第三个复选框应该是单向绑定(bind),因为无法设置该值。

一些 MVVM 框架可能会让你更容易一些,不过我没有使用过任何可以推荐的框架。

关于c# - 复选框绑定(bind) WPF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42416671/

相关文章:

WPF 定位占据窗口的全高

c# - 将webservice的Json格式Response转换

c# - 如何从 JavaScript 调用服务器端函数?

服务器控件 ASP.NET 中嵌入资源的 .js 文件中的 C# 变量

c# - 新的日期时间()与默认(日期时间)

WPF 字符串属性与 Button.Content 的绑定(bind)

c# - 使用inlinedata时是否可以使用string.empty?

wpf - 如何将绑定(bind)错误转换为运行时异常?

c# - http ://schemas. microsoft.com/winfx/2006/xaml/presentation 定义

c# - UWP Windows 10 应用程序中页面/ View 的通用基类