2

我正在努力解决 Wpf DataGrid。它ItemsSource是一个DataTable由类型单元组成的地方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}">

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

在此处输入图像描述

4

2 回答 2

0

正如这个问题所说,您可以使用您的代码隐藏设置绑定。

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

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

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

于 2016-07-24T05:18:14.923 回答
-1

您只需要手动设置列并将其绑定到 Item2 列。

<DataGrid ItemsSource="{Binding DataTablePropertyInYourDataContext}">
<DataGrid.Columns>
<DataGridTextColumn 
            Header="Item2" 
            Binding="{Binding ColumnNameInYourDataTable}" 
            />
</DataGrid.Columns>
</DataGrid>

或另一种解决方法:您可以订阅 AutoGeneratingColumn 事件,当不需要的列等于 true 时设置取消。在MSDN上看看这个

希望有帮助

于 2013-01-21T06:50:54.217 回答