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 设置为资源?

【讨论】:

是的。复选框上的上一个示例证明了这一点。 实际上你的例子只显示了一半的代码......无论如何,正如其他人所说,这可能不是你的问题。 【参考方案3】:

您需要使用数据模板:

数据模板>

如前所述,只有 UIElement 具有“可见性”依赖属性。

在上下文中查看此示例:

http://blogs.msdn.com/scmorris/archive/2008/04/14/defining-silverlight-datagrid-columns-at-runtime.aspx

【讨论】:

不是一个好的答案 - 这会隐藏列中的 元素,而不是 本身。

以上是关于Silverlight DataGridTextColumn 绑定可见性的主要内容,如果未能解决你的问题,请参考以下文章

缺少 Silverlight“业务应用程序”模板

SharpDevelop with Silverlight

silverlight 2.0 Beta1 下载

安装silverlight失败原因是啥

在打开silverlight项目之前,您需要安装最新的Silverlight开发人员运行时

Silverlight之我见