【问题标题】:WPF: How to autogenerate row headers not just column ones?WPF:如何自动生成行标题而不仅仅是列标题?
【发布时间】:2013-05-09 07:37:38
【问题描述】:

我有一个带有 DataGridWPF 应用程序。我使用AutoGenerateColumns="True" 填充它,因为列数和行数并不总是相同。

问题在于它只自动生成列标题而不是行标题。所以我决定做他们在这里做的事情:http://tech.pro/tutorial/1055/wpf-datagrid-tutorial-row-headers 但我不能把AutoGenerateColumns="False" 放在那里,因为我从 DataSet 绑定了一个 DataTable,它的大小并不总是相同 - 标题并不总是包含相同的文本.

使用上面链接中的代码,我有列标题和行标题(这个是通过在 xaml 代码中手动绑定来设置的),但我仍然得到了第一个(标题)列。我无法擦除第一列 - 异常会消失。

任何提示如何获取 行标题 而无需像链接中那样手动设置它们?或者任何想法如何删除我用作行标题的第一列?

P.S.:我知道人们已经在这里问过类似的问题,但我没有找到任何与我一样的问题,并且没有找到对我有帮助的答案:|

【问题讨论】:

    标签: c# wpf header row


    【解决方案1】:

    您可以在代码中创建样式:

            Style rowHeaderStyle=new System.Windows.Style(typeof(DataGridRowHeader));
            rowHeaderStyle.Setters.Add(new Setter(DataGridRowHeader.ContentProperty,new Binding("SomeField")));
            simpleDataGrid.RowHeaderStyle = rowHeaderStyle;
    

    并在 AutoGeneratingColumn 事件中删除此字段:

        private void simpleDataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
        {
            if (e.PropertyName == "SomeProperty")
                e.Cancel = true;
        }
    

    【讨论】:

    • 非常感谢!我有第一部分。只是不知道如何禁用第一列的生成,所以我不会有它。现在它可以按我的意愿工作了:)
    • 我刚刚对此进行了试验,发现也可以在DataGrid 中将第一个代码块编写为 XAML:<DataGrid> <DataGrid.RowHeaderStyle> <Style TargetType="DataGridRowHeader"> <Setter Property="Content" Value="{Binding SomeProperty}"/> </Style> </DataGrid.RowHeaderStyle> </DataGrid>
    猜你喜欢
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多