C# 如何在使用DataGridTemplateColumn构建DataGrid时获取当前集合元素的索引?
我试图在DataGrid中显示一个数组,如下所示: XAML:C# 如何在使用DataGridTemplateColumn构建DataGrid时获取当前集合元素的索引?,c#,wpf,data-binding,datagrid,datagridtemplatecolumn,C#,Wpf,Data Binding,Datagrid,Datagridtemplatecolumn,我试图在DataGrid中显示一个数组,如下所示: XAML: <DataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False" > <DataGrid.Columns> <DataGridTemplateColumn Header="Index" IsReadOnly="True"> <DataGridTemplateColumn.Ce
<DataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTemplateColumn Header="Index" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Items, Path=}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Name" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Items, Path=Name}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
“名称”列按预期工作,但我想知道是否有办法在“索引”列中显示集合中当前元素的索引,这样我就不必将其作为集合本身的数据项了。我刚刚创建了这个
<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False" Name="DGrid">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Index" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Tag="{Binding}" Loaded="TextBlock_Loaded" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Name" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
然后修改两行:
items.Add(new Item() { Name = Guid.NewGuid().ToString(), ItemCollection = items });
及
老实说,我不确定这是不是最好的办法 我刚刚创建了这个
<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False" Name="DGrid">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Index" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Tag="{Binding}" Loaded="TextBlock_Loaded" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Name" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
然后修改两行:
items.Add(new Item() { Name = Guid.NewGuid().ToString(), ItemCollection = items });
及
老实说,我不确定这是不是最好的办法 我想我更喜欢基于事件的解决方案,虽然我同意这一点,但两者都不是很好。我实际上认为绑定版本是一种方式。。。只是在项目中引用集合的要求可以是PITA。我想我更喜欢基于事件的解决方案,尽管我同意这一点,但两者都不是很好。我实际上认为绑定版本是最好的选择。。。只是在项目中引用集合的需求可以是PITA。
<TextBlock Text="{Binding Index}" />