【问题标题】:c# wpf datagrid clicked event and getting row valuec# wpf datagrid点击事件并获取行值
【发布时间】:2017-07-23 01:16:31
【问题描述】:

如何做到这一点?我想要一个 Clicked-event-handler,只要我点击一行就会触发。以及如何获取所选行的所有列值。 提前致谢。任何帮助将不胜感激。

【问题讨论】:

    标签: c# datagrid


    【解决方案1】:

    您想为 DataGrid 上的选择更改事件实现事件处理程序

                    <DataGrid x:Name="dataGridMaster" SelectionChanged="dataGridMaster_SelectionChanged">
    

    就获取所选行的列值而言,很大程度上取决于您将数据网格绑定到什么。例如,如果您已将 DataGrid 绑定到 DataTable,那么您将如何访问事件处理程序中所选行的列值。

        private void dataGridMaster_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            foreach(DataRowView rv in e.AddedItems)
            {
                Debug.WriteLine("Row contents:");
                foreach (object d in rv.Row.ItemArray)
                {
                    Debug.WriteLine("\t" + d.ToString());
                }
            }
        }
    

    【讨论】:

    • 我将它绑定在 List 中。如何通过列名具体获取单元格值。 WF 中的示例是 row.Cells["Schedule ID"].Value.ToString();
    • 什么是对象?您在 e.AddedItems 中获取对象。只需从对象中获取列值。您知道它是如何绑定到数据网格列的。我认为您要求的是 DataGrid 上单元格中值的实际呈现。这很难得到,因为您必须知道该列是如何实现的。例如,如果您有一个 DataGridTextColumn,则呈现在 TextBlock 中完成,该 TextBlock 是 ContentPresenter 的子级,后者是 Border 的子级,而 Border 是 DataGridCell 的子级。所以你可以做到……但为什么呢?只需从对象本身获取值。
    猜你喜欢
    • 2011-03-08
    • 2011-07-24
    • 2021-12-26
    • 2018-06-29
    • 2019-02-09
    • 2012-07-25
    • 2012-11-16
    • 2014-05-12
    • 2017-01-15
    相关资源
    最近更新 更多