WPF数据网格与checkListBox下拉
本文关键字:checkListBox 下拉 网格 数据 数据网 WPF | 更新日期: 2023-09-27 17:49:32
我对WPF开发相当陌生。我想创建一个WPF数据网格与以下列:复选框列,文本列,按钮列,检查表框下拉列和组合框下拉列。我还需要将侦听器添加到检查表框的下拉列中。我在使用inffragistics超网格的winforms中创建了相同的。它看起来像这样:
我阅读了在wpf中使用datagridtemplatecoluml向数据网格添加一些自定义控件,但我不确定如何实现这一点。模板可以在组合框和复选框?一个简短的代码示例将是伟大的。我必须使用fragistics还是可以使用WPF标准控件来实现这个UI ?
您可以使用标准WPF控件完成此操作。这是WPF最伟大的部分之一——它非常灵活(通常不需要太多的努力)。下面是一个例子,它可以帮助你找到正确的方向:
<DataGrid AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="Selected"/>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="Click Me!"
Command="{Binding myItemCommand}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Task"
Binding="{Binding TaskText}"/>
<DataGridTextColumn Header="Resources"
Binding="{Binding ResourcesText}"/>
<DataGridComboBoxColumn ItemsSource="{Binding AvailableStatuses}"
SelectedItemBinding="{Binding SelectedStatus}"
Header="Status" />
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid ItemsSource="{Binding Resources}">
<DataGrid.Columns>
<DataGridCheckBoxColumn Binding="{Binding IsResourceUsed}"/>
<DataGridTextColumn Binding="{Binding ResourceName}"/>
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
一旦你进入了上面所示的标签,你可以在里面放很多你想要的控件,它们会在每行重复出现。每个项目的绑定绑定到行表示的对象,所以如果你有一个任务对象列表,你的DataGrid正在显示,该列表中的每个任务应该有属性绑定到TaskText, ResourcesText等。
编辑:更新了代码片段以显示RowDetailsTemplate。如果RowDetailsTemplate中有另一个DataGrid之类的东西不能完成工作,您可以编写自己的多选择组合框,但它可能相当复杂,因为据我所知,默认的组合框没有好方法允许您选择多个项目。