将项目插入列表到DataGrid-Column-Index 2中
问题描述:
我有一个DataGrid。非常简单:将项目插入列表<string>到DataGrid-Column-Index 2中
<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的前面。
感谢提前:)
答
您可以手动创建列和第二列中使用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>
的财产的名称。
你的意思是你想要一行的第二列来保存字符串列表吗? – Redouane
@Redouane是的,列表中有大约70个条目。这些应显示在第二列标题下的行中。 – Niclas