DataGrid单元格编辑模板中的复选框列表

时间:2019-04-24 16:24:03

标签: c# wpf

我尝试根据数据库数据在WPF数据网格单元格中仅选中“一对”复选框。

我创建了带有来自数据库的列表的复选框列表,并且当我在单元格上处于编辑模式时,该列表就会出现。目前,我只能全部检查或不检查。

这是我要在其中显示复选框的列中的XAML代码。

 plot.add_layout(LinearAxis(), 'left')
 plot.add_layout(LinearAxis(), 'right')

最后,我想要一个带有类和一个适用于Teacher的列的DataGrid。我希望能够将多个老师与班级联系起来。当我在单元格上进入编辑模式时,我希望能够显示我数据库中所有老师的名字(因此我不知道他们,也不知道数量),并且仅检查与班级相关的人从我继续的那一行。

要关联多名老师和全班老师,我的数据库中有一张表格,其中包含老师ID和班级ID。

谢谢。

更新
在您的帮助下,我取得了一些成就。我已经创建了一个“教师”类,其名称和一个布尔值“ IsCheck”。

在我的对象“班级”中,现场教师列出一个列表。我为每个班级创建了每个列表,并将IsCheck设置为适当的Teacher。

在我的XAML中,将复选框DataTemplate的源设置为此教师列表。

<DataGridTemplateColumn Header="Teacher" Width="100">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding TeacherName}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <ItemsControl ItemsSource="{StaticResource TeacherList}">
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <CheckBox Content="{Binding}" IsChecked="False"/>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

1 个答案:

答案 0 :(得分:0)

这样做的时候

 <CheckBox Content="{Binding}" IsChecked="False"/>

您没有将IsChecked绑定到任何东西。 因此,无论您使用该复选框做什么,我都不会坚持到底。

您应该使教师成为至少具有两个公共属性的班级。字符串名称和布尔检查。 Give Checked的默认值为false。还应该实现inotifypropertychanged。

将标记更改为:

 <CheckBox Content="{Binding Name}" IsChecked="{Binding Checked, Mode=TwoWay"/>

执行此操作后,您应该可以选中和取消选中每个教师,并且该复选框将保留在该复选框绑定的“教师(实例)”中。

顺便说一句。

这种用户界面设计似乎有点奇怪。

更常见的一种设计是具有一个类的列表框。选择一个,所选的类将用于驱动您在另一个列表框中看到的内容。

这将在另一个列表框中为您提供单独的教师列表。