Silverlight DataGridTextColumn 绑定可见性
Posted
技术标签:
【中文标题】Silverlight DataGridTextColumn 绑定可见性【英文标题】:Silverlight DataGridTextColumn Binding Visibility 【发布时间】:2010-11-02 06:24:55 【问题描述】:按照我的earlier post,我现在正在尝试将 DataGridColumns 的可见性绑定到 VM 通知属性。 MSDN 建议我应该能够轻松做到这一点。
我已经有一个我知道可以工作的值转换器和 VM 通知属性(我已经在我页面上的另一个元素上测试了这些:
<CheckBox x:Name="chkAllTeams" Visibility="Binding Converter=StaticResource BoolToVisibilityConverter, Path=AllTeams"/>
此复选框控件的可见性反应如我所料。当我在 DataTextColumn 上设置相同的绑定时,我在 XAML 的 Visibility= 行上收到 AG_E_BAD_PARSER 错误:
<data:DataGridTextColumn
Visibility="Binding Converter=StaticResource BoolToVisibilityConverter, Path=AllTeams"
/>
有什么想法吗? 谢谢, 标记
【问题讨论】:
【参考方案1】:DataGridTextColumn 上的可见性与复选框上的不同。基本上,它不是依赖属性,也不能是数据绑定的。如果你需要这个功能,你可以继承 DataGridTextColumn 并添加你自己的依赖属性来获取行为。
矩形从 UIElement 获取其 Visibility 属性,是一个依赖属性 DataGridTextColumn 从 DataGridColumn 获取其 Visibility,而不是依赖属性。【讨论】:
啊,这正是我所期望的 :-( 继承 DataGridTextColumn 是一件容易的事吗?你知道任何在线示例吗?马克 我不知道 DataGridTextColumn 的任何特定示例。一般的方法是子类化,为可见性添加一个新的依赖属性,然后在 Datagrid.Columns 中使用新的子类。 Jesse 对依赖属性有很好的解释:silverlight.net/blogs/jesseliberty/archive/2008/09/30/… 那个链接已经失效了,这是新链接:jesseliberty.com/2008/09/30/… 使用附加属性怎么样?【参考方案2】:您是否将 BoolToVisibilityConverter 设置为资源?
【讨论】:
是的。复选框上的上一个示例证明了这一点。 实际上你的例子只显示了一半的代码......无论如何,正如其他人所说,这可能不是你的问题。您需要使用数据模板:
如前所述,只有 UIElement 具有“可见性”依赖属性。
在上下文中查看此示例:
http://blogs.msdn.com/scmorris/archive/2008/04/14/defining-silverlight-datagrid-columns-at-runtime.aspx
【讨论】:
不是一个好的答案 - 这会隐藏列中的 元素,而不是 列 本身。以上是关于Silverlight DataGridTextColumn 绑定可见性的主要内容,如果未能解决你的问题,请参考以下文章