将项目列表<string>插入DataGrid-Column-Index 2

时间:2017-10-19 09:01:42

标签: c# wpf xaml data-binding datagrid

我有一个DataGrid。很简单:

<DataGrid Width="320" Height="340" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="0" Grid.RowSpan="2" HorizontalAlignment="Center" VerticalAlignment="Center">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Filter" Width="Auto"/>
            <DataGridTextColumn Header="Name" Width="*"/>
        </DataGrid.Columns>
    </DataGrid>

所以现在我需要在第二列中插入一个字符串列表。 我一直在寻找一个很好的解决方案,但找不到一个好的解决方案。我想过用绑定做这个,但是不能让它只填充第二列。

在第一列中,我想将复选框放在每个字符串Item的前面。

提前致谢:)

1 个答案:

答案 0 :(得分:0)

您可以手动创建列,第二列使用DataGridTemplateColumn并提供ItemsControl(或任何继承它的控件)为DataGridTemplateColumn.CellTemplate,如下所示:

    <DataGrid Margin="4" AutoGenerateColumns="False" ItemsSource="{Binding Models}">
        <DataGrid.Columns>
            <DataGridCheckBoxColumn Header="CheckBox Column Header" Binding="{Binding BindToBooleanPropertyFromModel}"></DataGridCheckBoxColumn>
            <DataGridTemplateColumn Header="List of strings">
                <DataGridTemplateColumn.CellTemplate>
                    <ItemContainerTemplate>
                        <ItemsControl ItemsSource="{Binding BindToListPropertyFromModel}">
                        </ItemsControl>
                    </ItemContainerTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>

我使用BindToBooleanPropertyFromModelBindToListPropertyFromModel作为占位符,分别为bool类型的属性名称和类型IEnumrable<T>的属性,分别包含字符串列表。