2

我正在使用 WPF 应用程序,在该应用程序中,我正在使用 Telerik 网格,并且我正在使用 MVVM mpdel 在 yjay 网格中绑定数据。我想根据我的布尔值禁用灰显该网格中的特定列。我将该 GridViewDataColumn 的IsEnabled属性设置为 false,但它不会受到该列的影响....

请问谁能告诉我这个问题的解决方案?

提前致谢....

我禁用网格列的代码是:

  <telerik:GridViewDataColumn Width="40" IsFilterable="False"  HeaderTextAlignment="Center" Header="Max" DataMemberBinding="{Binding Constraint.MaxCountConstraint, Mode=TwoWay}" IsEnabled="{Binding MyBoolValue}" Tag="Exclude" /> 
4

2 回答 2

1

新的IsReadOnlyBinding应该可以解决问题。

<telerik:GridViewDataColumn Width="40" IsFilterable="False"  HeaderTextAlignment="Center" Header="Max" DataMemberBinding="{Binding Constraint.MaxCountConstraint, Mode=TwoWay}" IsReadOnlyBinding="{Binding MyBoolValue}" Tag="Exclude" />
于 2012-10-05T01:39:55.163 回答
0

就在昨天,我被这个咬了。我的问题在于内置的 WPF DataGrid,但我认为这是相同的根本原因。

基本问题是您的 GridViewDataColumn 是一个虚拟构造。它实际上并没有显示在屏幕上。显示的是其中的数据 - 标题的单元格,数据的单元格等。这意味着 GridViewDataColumn 不是它所在窗口的可视化树的一部分,因此绑定到默认视图的 DataContext失败。如果您查看 Visual Studio 的“输出”窗格,您将看到此绑定错误。

我在Thomas Levesque 的博客中找到了解决方案,虽然有点 hack,但效果很好。它涉及创建一个名为的小类,BindingProxy它是Freezable一个 WPF 基类,它允许数据上下文超越可视层次结构。您在视图中创建一个BindingProxy静态资源并将其绑定到您的数据上下文,然后将您的 GridViewDataColumn 绑定到代理。

查看链接,我几乎逐字复制了代码示例,它就像一个魅力。

于 2012-04-05T06:15:42.457 回答