【问题标题】:CheckBox binding Mode works one wayCheckBox 绑定模式以一种方式工作
【发布时间】:2015-10-12 02:35:58
【问题描述】:

我有一个 Datagrid,我有一列里面有一个 CheckBox(我知道 DataGridCheckBoxColumn 存在,但我不喜欢这种行为(单击一次以选择,第二次单击以更改值)。

这个复选框是这样绑定的

<DataGridTemplateColumn x:Name="checkColumn" Header="Check">
    <DataGridTemplateColumn.CellTemplate>
       <DataTemplate>
          <CheckBox IsChecked="{Binding load, Mode=TwoWay}" />
       </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

TwoWay 模式应该是默认的,但我还是添加了它,因为它似乎像只读一样工作。

而且属性负载很简单

private bool _load;
public bool load
{
   get { return _load; }
   set { _load = value;}
}

但最终绑定无法正常工作。对于每个项目,我默认显示正确的值(选中/未选中),但如果我选中/取消选中复选框,数据不会发生任何变化(但复选框确实会在视觉上发生变化,但从不调用项目的设置器) .

我怀疑问题不大,既然读取了默认值,绑定也不是完全错误,但是我不知道为什么setter从来没有被调用过。

【问题讨论】:

  • 为什么不用INotifyPropertyChanged接口?
  • 是一个“单用”的列表,除了这个bool值不能修改,后来觉得用这个接口没意思,完全忘记了必须用触发器DeshDeep Singh 建议如下

标签: c# wpf checkbox binding


【解决方案1】:

您是否尝试过 UpdateSourceTrigger=PropertyChanged?

<CheckBox IsChecked="{Binding load, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

【讨论】:

    猜你喜欢
    • 2021-04-16
    • 1970-01-01
    • 2020-11-12
    • 2019-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    • 1970-01-01
    相关资源
    最近更新 更多