我有一个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的前面。
提前致谢:)
答案 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>
我使用BindToBooleanPropertyFromModel
和BindToListPropertyFromModel
作为占位符,分别为bool
类型的属性名称和类型IEnumrable<T>
的属性,分别包含字符串列表。