2

私は WPF アプリケーションを使用しています。そのアプリケーションでは、telek gird を使用しており、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 のブログで解決策を見つけました。これは少しハックですが、完全に機能します。これには、データ コンテキストが視覚的な階層を越えて冒険できるようにする WPF 基本クラスでBindingProxyある を継承するという名前の小さなクラスを作成することが含まれます。ビューで StaticResource として をFreezable作成し、それをデータ コンテキストにバインドしてから、GridViewDataColumn をプロキシにバインドします。BindingProxy

リンクをチェックしてください。コードサンプルをそのままコピーしたところ、魅力的に機能しました。

于 2012-04-05T06:15:42.457 に答える