gpt4 book ai didi

.net - DataGrid 列中的列/行索引

转载 作者:行者123 更新时间:2023-12-02 00:00:34 25 4
gpt4 key购买 nike

我希望以下内容能让我在单元格中获得列索引:

<DataGridTemplateColumn Header="Rec. No." Width="100" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Source={RelativeSource AncestorType=DataGridCell}, Path=Column.DisplayIndex}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

但事实并非如此。谁能告诉我这里出了什么问题?

我实际上是在寻找行索引(我的网格中需要一个记录号列),但是由于 DataGridRow 显然没有“索引”类型的属性,我试图首先为列索引做它,它有 DisplayIndex。但即使是这个也行不通。

最佳答案

绑定(bind)语法不正确。而不是 Source,它应该是 RelativeSource:

Text="{Binding RelativeSource={RelativeSource AncestorType=DataGridCell}, 
Path=Column.DisplayIndex}"

对于获取 RowIndex 的第二个问题,DataGridRow 上没有内置属性,例如 RowIndex

我建议在底层数据类中拥有一些属性并绑定(bind)到它。

但是,您也可以通过 IValueConverter 手动获取 rowIndex 到位。

public class RowIndexConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
DependencyObject item = (DependencyObject)value;
ItemsControl ic = ItemsControl.ItemsControlFromItemContainer(item);

return ic.ItemContainerGenerator.IndexFromContainer(item);
}

public object ConvertBack(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
return Binding.DoNothing;
}
}

XAML:

<TextBlock
Text="{Binding RelativeSource={RelativeSource AncestorType=DataGridRow},
Converter={StaticResource RowIndexConverter}}"/>

当然,您需要在 XAML 的资源部分下声明 Converter 的实例才能使用它。

关于.net - DataGrid 列中的列/行索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21648873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com