c# - 如何在 DataGrid 中设置 DisplayMemberPath?

标签 c# wpf xaml datagrid

我正在与 Wpf DataGrid 作斗争.它的ItemsSourceDataTable其中由类型细胞组成 Tuple<int, string>

这是关于如何创建我的 DataTable 的一小段代码.

            // Create columns
            for (int j = 0; j < maxCount; j++) {
                dt.Columns.Add(selectedTests[i].Name + " " + (j + 1).ToString(), typeof(Tuple<int, string>));
            }

            // Create rows 
            for (int k = 0; k < tuple.Item2.Count; k++) {
                var newRow = dt.NewRow();
                dt.Rows.Add(newRow);
            }

            ...
            dt.Rows[k][i + m] = new Tuple<int, string>(n, str);

然后我设置这个DataTable到我的DataGrid我只想显示属性 Item2从元组中,我现在需要保留元组实例。并且无法定义我的列来设置 displaymemberPath因为是自动生成的。

    <DataGrid  x:Name="dataGrid" LoadingRow="dataGrid_LoadingRow_1" ItemsSource="{Binding DataTable}" DisplayMemberPath="{Binding Item2}">

一直以来,我的数据网格都将我的元组转换为字符串,如下所示:

enter image description here

最佳答案

如本 question说,您可以设置与代码隐藏的绑定(bind)。

因此,您可以订阅 yourgrid_AutoGeneratingColumn 事件并执行此操作:

(e.Column as DataGridTextColumn).Binding = new Binding("Title");

当然,您应该通过一些解决方案将您的 ColumnName 传递到 AutoGeneratingColumn 事件中...

关于c# - 如何在 DataGrid 中设置 DisplayMemberPath?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14433200/

相关文章:

c# - WPF格式显示的文字?

c# - 打开 PathListBoxScrollBehavior WPF

WPF - 有没有办法在 ControlTemplate 的触发器中定位元素类型?

c# - Thread.Interrupt 不工作

c# - ASP.NET/Visual Studio 2010 中的 Crystal 报表

c# - Razor 中的类型检查

c# - 在应用 Mode-View-ViewModel 设计模式时包括部分 View

c# - Wpf:MediaElement 暂停并再次播放禁用速度比

c++ - 实现视频编辑器

c# - 我写了有趣的 Linq 代码,但我不知道它如何工作或为什么工作