【问题标题】:WPF DataGrid ItemsSource Binding LinqWPF DataGrid ItemsSource 绑定 Linq
【发布时间】:2011-12-17 07:54:54
【问题描述】:

这是我的问题。我有一个 WPF 数据网格,我将 .ItemsSource 绑定到一个 linq 查询 IEnumerable 结果。这很好用。当我运行程序时,数据已正确加载到数据网格中。我的问题是显示的数据太多。 (IE 用户不需要查看 ID 字段等)。我正在尝试做的是在绑定到 .ItemsSource 之后,我想隐藏几列。我找到了 .Visibility 并尝试设置它,但 columns 对象为空。 绑定后我尝试了以下方法:.Items.Refresh() 和 .UpdateLayout()。

我的问题是设置 .ItemsSource 后需要调用什么方法来刷新列?

【问题讨论】:

    标签: c# wpf datagrid wpfdatagrid


    【解决方案1】:

    另一种解决方案可能是更改您的 linq 查询。只需选择要显示的列,如下所示:

    dataGrid.ItemsSource = myquery.Select(x => new { Name = x.Name, Age = x.Age });
    

    【讨论】:

    • 是的,我最初是这样做的,但如果它需要 ID,我必须对名称进行查找...不过是个好主意。
    【解决方案2】:

    为什么不明确设置您的 DataGrid? http://www.wpftutorial.net/DataGrid.html -- 这将帮助您手动设置 DataGrid,而不是让它使用自动生成的列。

    【讨论】:

    • 我也可以,但我宁愿不明确定义列。对我来说,似乎必须在设置 itemssource 后让 columns 对象填充。
    【解决方案3】:

    如果您想使用 DataGrid 列的 .Visibility,请在 DataGrid 中加载数据后执行此操作。在 ItemSource 绑定之后,DataGrid 没有被加载;这就是你得到空列对象的原因。

    希望这对你有用。

    【讨论】:

    • 感谢您的回复。这是我试图做的重要事情。我想要一种手动方式在绑定 ItemSource 之后强制加载,以便之后我可以直接调用列的可见性属性。但我找不到办法。
    猜你喜欢
    • 2011-07-10
    • 2019-03-23
    • 2011-07-21
    • 2017-09-18
    • 2011-04-22
    • 2023-03-07
    • 1970-01-01
    • 2020-01-30
    • 2018-07-16
    相关资源
    最近更新 更多