【发布时间】:2017-06-22 10:36:22
【问题描述】:
我需要将标题中的 Datagrid columns visibility 从 context menu 更改。默认情况下,所有列的可见性都在 XAML 代码中设置。
<DataGridTextColumn Visibility="Visible" Binding="{Binding Story}" Header="Story" />
我不想从 ViewModel 绑定每个列的可见性。 如果所有列都被隐藏,我想要将所有列的可见性设置为可见,反之亦然。全部来自 XAML 代码,没有绑定列代码内的可见性。
【问题讨论】:
-
听起来您需要创建一个实现 IValueConverter 的类,该类采用您的模型并返回适当的可见性值
-
如果整个列被隐藏,你应该如何显示上下文菜单?
-
@mm8 我添加了一个空列作为临时解决方案,并在显示一列或多列时将其删除,通过循环遍历所有列和设置他们的知名度。但我正在寻找仅使用 XAML 代码的解决方案。 (不用于添加空列)因为这不是 MVVM 方法。
-
MVVM 不是关于消除代码的。它是关于关注点的分离。 XAML 是一种标记 语言。添加代码以在控件本身或视图中隐藏/显示 DataGrid 的列是非常好的。
-
@mm8 谢谢,我刚刚根据你的评论做了一个快速的研究,你是绝对正确的。谢谢你:)
标签: c# wpf datagrid contextmenu visibility