【问题标题】:Can I set DataGridHeader by AutoGeneratedColumns?我可以通过 AutoGeneratedColumns 设置 DataGridHeader 吗?
【发布时间】:2019-10-19 13:18:59
【问题描述】:

我想通过 AutoGeneratedColumns 设置标题 FirstName,LastName。 我试过这段代码,但 DataGrid Header 显示 Name1,Name2。

我知道,DataGridColumns 可以制作标题。 但我想通过 AutoGeneratedColumns 设置标题。

有什么办法吗?

感谢您抽出宝贵时间对此进行审核!

视图模型

public class DataGridItems
{
    [Description("FirstName")]
    public string Name1 { get; set; }

    [Description("LastName")]
    public string Name2 { get; set; }
}

主窗口

public partial class MainWindow : Window
{
    public List<DataGridItems> ItemsSource { get; set; }
    public MainWindow()
    {
        InitializeComponent();
        this.DataContext = Enumerable.Range(1, 10).Select(a => new DataGridItems { Name1 = a.ToString(), Name2 = "Last" + a.ToString() });
    }
}

XAML

<Grid>
    <DataGrid ItemsSource="{Binding}"/>
</Grid>

【问题讨论】:

  • 请避免在您的问题标题中放置标签(有关更多信息,请参阅标签帮助页面)。

标签: c# wpf datagrid


【解决方案1】:

您可以在视图中处理AutoGeneratingColumn 事件:

public partial class MainWindow : Window
{
    public List<DataGridItems> ItemsSource { get; set; }

    public MainWindow()
    {
        InitializeComponent();
        this.DataContext = Enumerable.Range(1, 10).Select(a => new DataGridItems { Name1 = a.ToString(), Name2 = "Last" + a.ToString() });
    }


    private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
    {
        DescriptionAttribute descriptionAttribute = typeof(DataGridItems)
            .GetProperty(e.PropertyName)?
            .GetCustomAttributes(true)?
            .OfType<DescriptionAttribute>()
            .FirstOrDefault();
        if (descriptionAttribute != null)
            e.Column.Header = descriptionAttribute.Description;
    }
}

XAML:

<DataGrid ItemsSource="{Binding}" AutoGeneratingColumn="DataGrid_AutoGeneratingColumn"/>

视图模型不负责提供在视图中设置DataGrid 的标题的功能。这应该在视图或控件中实现,就像在 XAML 标记中将标头设置为某些固定值时一样。

【讨论】:

    猜你喜欢
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 2011-05-06
    相关资源
    最近更新 更多