我对WPF的开发相当陌生。我想创建一个包含以下列的WPF数据集: CheckBox列、文本列、按钮列、核对表框下拉列和组合框下拉列。我还需要将侦听器添加到核对表框下拉列中。我已经在winforms中创建了同样的版本,使用的是。看起来是这样的:
我阅读了使用DataGridTemplateColumn在wpf中添加一些自定义控件到数据框架中的内容,但不知道如何实现。模板可以接受组合框和复选框吗?一个简短的代码示例就很好了。我将不得不使用不碎片,或者这个UI能实现使用WPF标准控件吗?
如能对此提供任何帮助,将不胜感激。
发布于 2015-05-18 16:06:20
您可以使用标准的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的东西无法完成任务,那么您可以编写自己的多选择组合框,但它可能相当复杂,因为默认的DataGrid无法让您选择多个项目。
https://stackoverflow.com/questions/30307365
复制相似问题