如何使用WPF C#代码获取DataGrid中所有的表头文本

3
我希望能够从WPF应用程序的datagrid中获取所有标题文本。这是否可能?我想要获取所有标题文本,而不仅仅是一个标题文本。我想以集合格式获取所有标题文本。就像我们从datagrid中获取项一样。像这样: DataRowView row = (DataRowView)dataGridUserSalesRep.Items.GetItemAt(0); XAML:
  <DataGrid x:Name="dataGridUserSalesRep" TextElement.FontStretch="Normal"  FontSize="12"    FontWeight="DemiBold" ColumnWidth="100" RowHeight="50" Height="568" HorizontalAlignment="Left"  VerticalAlignment="Top" Width="1136" FontFamily="Arial" Background="White" AutoGenerateColumns="False" IsReadOnly="True" ColumnHeaderHeight="40" HorizontalGridLinesBrush="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" VerticalGridLinesBrush="{DynamicResource {x:Static SystemColors.ControlDarkDarkBrushKey}}" ClipboardCopyMode="IncludeHeader">
                        <DataGrid.BorderBrush>
                            <LinearGradientBrush  EndPoint="0.5,1" StartPoint="0.5,0">
                                <GradientStop Color="Black" Offset="0"/>
                                <GradientStop Color="#FF28689F" Offset="0.033"/>
                            </LinearGradientBrush>
                        </DataGrid.BorderBrush>
                        <DataGrid.Columns  >
                            <DataGridTextColumn x:Name="currDG"  Binding="{Binding curr}" FontWeight="Normal"  Width="120" ClipboardContentBinding="{x:Null}" Header="Currency">
                                <DataGridTextColumn.ElementStyle>
                                    <Style>
                                        <Setter Property="TextBlock.TextWrapping"  Value="Wrap"/>
                                    </Style>
                                </DataGridTextColumn.ElementStyle>
                            </DataGridTextColumn>

                            <DataGridTextColumn Binding="{Binding profit}" x:Name="totalProfitDG" FontWeight="Normal" Width="160" ClipboardContentBinding="{x:Null}" Header="Total Profit">
                                <DataGridTextColumn.ElementStyle>
                                    <Style>
                                        <Setter Property="TextBlock.TextWrapping"  Value="Wrap"/>
                                    </Style>
                                </DataGridTextColumn.ElementStyle>
                            </DataGridTextColumn>

                            <DataGridTextColumn   Binding="{Binding sale}"  x:Name="totalSaleDG"  FontWeight="Normal" Width="160" ClipboardContentBinding="{x:Null}" Header="Total Sale">
                                <DataGridTextColumn.ElementStyle>
                                    <Style>
                                        <Setter Property="TextBlock.TextWrapping"  Value="Wrap"/>
                                    </Style>
                                </DataGridTextColumn.ElementStyle>
                            </DataGridTextColumn>
                            <DataGridTextColumn x:Name="agentDG"  Binding="{Binding agent}"  FontWeight="Normal" Width="210" ClipboardContentBinding="{x:Null}" Header="Agent">
                                <DataGridTextColumn.ElementStyle>
                                    <Style>
                                        <Setter Property="TextBlock.TextWrapping"  Value="Wrap"/>
                                    </Style>
                                </DataGridTextColumn.ElementStyle>
                            </DataGridTextColumn>

                            <DataGridTextColumn  x:Name="customerNameDG" Binding="{Binding client}"  FontWeight="Normal" Width="210" ClipboardContentBinding="{x:Null}" Header="Customer Name">
                                <DataGridTextColumn.ElementStyle>
                                    <Style>
                                        <Setter Property="TextBlock.TextWrapping"  Value="Wrap"/>
                                    </Style>
                                </DataGridTextColumn.ElementStyle>
                            </DataGridTextColumn>

                            <DataGridTextColumn  x:Name="dateDG" Binding="{Binding date}"  FontWeight="Normal" Width="120" ClipboardContentBinding="{x:Null}" Header="Date" >
                                <DataGridTextColumn.ElementStyle>
                                    <Style>
                                        <Setter Property="TextBlock.TextWrapping"  Value="Wrap"/>
                                    </Style>
                                </DataGridTextColumn.ElementStyle>
                            </DataGridTextColumn>

                            <DataGridTextColumn x:Name="idDG" Binding="{Binding id}"   FontWeight="Normal"  Width="100" Header="S.Inv" />
                        </DataGrid.Columns>

                    </DataGrid>

代码后台:

    private DataTable dataTable;
    MySqlDataAdapter mySqlAdaptor;
    private MySqlCommand cmd;
    MySqlDataReader dataReader;

private void displayDataGrideSalesReport()
        {

        string    con = "SERVER=localhost;PORT=3306;DATABASE=salaamhost;UID=root;PASSWORD='';allow zero datetime=true;SslMode=none";

             var   myconection = new MySqlConnection();
             myconection.ConnectionString = con;
                cmd = myconection.CreateCommand();
                cmd.CommandType = CommandType.Text;



            cmd.CommandText = "SELECT sales.sale_id as id,sales.datetime as date ,sales.cash_sale_client_name as client, users.first_name AS agent , sales.grand_total as sale ,sales.profit  ,sales.currency as curr  FROM sales,users WHERE sales.agent_id = users.user_id group by  sales.sale_id ORDER BY sales.sale_id";

            myconection.Open();
            cmd.ExecuteNonQuery();
            dataTable = new DataTable();
            mySqlAdaptor = new MySqlDataAdapter(cmd);
            mySqlAdaptor.Fill(dataTable);
            dataGridUserSalesRep.ItemsSource = dataTable.AsDataView();
  }

请看下面的图片。我想使用后台代码获取绿色矩形的值。

enter image description here


代码?XAML?你能给我们一些吗? - Francesco B.
不,我不想使用XAML。我知道我们可以给标题命名并获取这些标题的文本。但是我想以集合形式获取所有标题。因为我正在创建报告,所以我想使用代码获取所有标题,就像我们获取所有项目一样。 - Muhammad Mehdi
是的,但您能否发布用于定义此表的任何内容? - Francesco B.
1
我有邮政编码。 - Muhammad Mehdi
1个回答

4

我想以集合形式获取所有的标题文本

如果您认可 List<string>,您可以在代码后台这样做:

var HeaderTexts = dataGridUserSalesRep.Columns.Select(e => e.Header.ToString()).ToList();

@MuhammadMehdi,我很高兴能够帮助你,最好的问候! - Francesco B.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接