【问题标题】:Wpf : checkbox three states set indeterminate state and bindingWpf:复选框三种状态设置不确定状态和绑定
【发布时间】:2018-04-12 14:02:03
【问题描述】:

我有这个复选框

<CheckBox IsChecked="{Binding Foo}" IsThreeState="True"></CheckBox>

如果我想将默认状态设置为不确定,我的复选框将类似于:

<CheckBox IsChecked="{x:Null}" IsThreeState="True" ></CheckBox> 

现在我想结合绑定并设置为不确定状态。 所以我的复选框会是这样的:

 <CheckBox IsChecked="{Binding Foo, x:Null}" IsThreeState="True" ></CheckBox>

你能帮我实现这个吗?

编辑:在我的 MainWindows.xaml.cs 中,我有 Foo 属性的代码

private Boolean foo;
public Boolean Foo
{
    get { return foo; }
    set
    {
        foo = value;
    }
}

【问题讨论】:

  • 改变viewmodel中Foo的默认值...
  • 当你将 Foo 属性的类型设置为 bool 时? (= nullable boolean),它应该可以工作。
  • 拜托布鲁诺你能读懂我编辑了我的答案。我是 C# 和 Xaml 的新手,我不确定什么是可为空的布尔类型。
  • 好的,伙计们,谢谢你们!如果您想发布解决方案,我会接受。如果没有,我会发布我自己的解决方案。

标签: c# wpf xaml mvvm


【解决方案1】:

这里有两个问题。首先你没有打电话给OnPropertyChanged()INotifyPropertyChanged 需要调用另一个,是 Foo 属性需要可以为空。

所以它可能看起来像:

private bool? _foo;
puclic  bool? Foo
{
    get=> _foo;
    set {
       _foo = value;
       OnPropertyChanged();
    }
}

【讨论】:

  • 是的,我必须声明可为空的布尔值。感谢您的评论。正如 GCamel 和 Bruno V 提到的,我必须在 InitializeComponent() 方法声明之前在 MainWindowsView.xaml.cs 构造函数中设置默认值。
猜你喜欢
  • 2014-06-06
  • 2016-01-13
  • 2011-04-24
  • 2013-05-23
  • 1970-01-01
  • 1970-01-01
  • 2019-01-21
  • 2018-11-14
  • 1970-01-01
相关资源
最近更新 更多