wpf 将数据列标题绑定到数据网格标题

bvjveswy  于 2022-11-18  发布在  其他
关注(0)|答案(2)|浏览(149)

我的问题类似于Why DataColumn.Caption doesn't work?,但针对的是WPF。我有一个使用MVVM模式绑定到DataTableDataGridDataGridAutoGenerateColumns = true。如何将DataGridColumn标题文本绑定到DataColumn.Caption而不是DataColumn.ColumnName?我希望有这样的解决方案:

<DataGrid ItemsSource="MyDataTable" AutoGenerateColumns="true">
    <DataGrid.Resources>
        <Style TargetType="{x:Type DataGridColumnHeader}">
            <Setter Property="ContentTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <TextBlock Text="{Binding DataColumn.Caption}"> <!--this does not work-->
...
</DataGrid>
wkftcu5l

wkftcu5l1#

我最终在后面的代码中解决了这个问题。

private void dgResults_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    e.Column.Header = tableResults.Columns[e.PropertyName].Caption;
}
xuo3flqw

xuo3flqw2#

当您将DataTable系结至DataGrid.ItemSource时,您通常会提供其类型为DataViewDefaultView。您可以使用其Table属性来存取该检视上的数据行,以正确转换值。

private void dataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    e.Column.Header = ((sender as DataGrid).ItemsSource as DataView).Table.Columns[e.PropertyName].Caption;
}

相关问题