WPF数据网格与checkListBox下拉

本文关键字:checkListBox 下拉 网格 数据 数据网 WPF | 更新日期: 2023-09-27 17:49:32

我对WPF开发相当陌生。我想创建一个WPF数据网格与以下列:复选框列,文本列,按钮列,检查表框下拉列和组合框下拉列。我还需要将侦听器添加到检查表框的下拉列中。我在使用inffragistics超网格的winforms中创建了相同的。它看起来像这样:

我阅读了在wpf中使用datagridtemplatecoluml向数据网格添加一些自定义控件,但我不确定如何实现这一点。模板可以在组合框和复选框?一个简短的代码示例将是伟大的。我必须使用fragistics还是可以使用WPF标准控件来实现这个UI ?

WPF数据网格与checkListBox下拉

您可以使用标准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之类的东西不能完成工作,您可以编写自己的多选择组合框,但它可能相当复杂,因为据我所知,默认的组合框没有好方法允许您选择多个项目。