【问题标题】:Set checkbox value foreach row in datagrid为数据网格中的每一行设置复选框值
【发布时间】:2014-05-03 19:55:26
【问题描述】:

我的数据网格中的 foreach 行有一个复选框:

  <DataGrid.Columns>
    <DataGridTextColumn Binding="{Binding Number}" Header="Name"/>
    <DataGridTemplateColumn Header="Watched">
      <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
          <CheckBox x:Name="checkWatched" IsChecked="{Binding Path=Watched, Mode=TwoWay}" Click="checkWatched_Click" />
        </DataTemplate>
      </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
  </DataGrid.Columns>

我的数据库包含复选框的值(真或假)。 如何在数据网格中为每一行设置复选框的值?

【问题讨论】:

  • 你已经通过绑定完成了。
  • 你不会在 WPF 中“foreach 一个 DataGrid”,仅仅是因为 UI is not Data。迭代您的数据项并改为修改 Watched 属性。

标签: wpf checkbox binding datagrid


【解决方案1】:

创建一个实现 INotifyPropertyChanged 的​​类(我们现在称之为 MyObject)。在 MyObject 中创建一个名为“Watched”的 bool 类型的属性。在 setter 中,引发您的属性更改事件。如果您希望网格在任何人调用 setter 时反映对数据的任何更改,则这是必要的。

创建一个名为 WatchedList 或其他名称的 MyObject 集合。现在在您的数据库中“foreach”项目,向 WatchedList 添加一个新对象,以反映数据库中的值。

然后在您的 XAML 中,在 DataGrid 上您将设置 ItemsSource = "{Binding WatchedStatuses}"。

然后你可以从你后面的代码中从 WatchedList 中的每个项目中获取 Watched 的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-01
    • 2011-06-05
    • 2011-03-03
    • 1970-01-01
    • 2020-03-22
    • 1970-01-01
    • 2011-09-12
    • 2013-09-28
    相关资源
    最近更新 更多