3

私を悲惨な状態から解放してください:

<ListView.ItemContainerStyle>
    <Style TargetType="ListViewItem">
        <Setter Property="IsEnabled" Value="{Binding MyBoolField}" />
    </Style>
</ListView.ItemContainerStyle>

の割り当てられMyBoolFieldた各アイテムで使用可能なプロパティはどこにあり、もちろんタイプです。ListViewItemsSourcebool

望ましい動作は、IsEnabledそれぞれのプロパティが含まれるオブジェクトListViewItemのプロパティにバインドされることです (のMyBoolField要素)。ただし、上記の例では、このバインディングに注意を払っておらず、常に.ListViewItemsSourcetrue

値をfalse静的に設定すると、期待どおりに項目が無効になります。

これはスコープの問題、またはこの特定のシナリオでのバインディングの使用に関する制限であるとしか考えられませんが、これをサポートするドキュメントを見つけることができません。

DataTemplateおそらく、割り当てられた thisに設定されたバインディングがすべて正常に機能することを知っておくと便利ですListViewItemTemplateしたがって、問題がそれほど基本的/愚かではないことを願っています。

コメントのポイント

  • デバッグの「出力」ウィンドウに関連する出力がありません。
  • 基になるデータ ソースがブール値を正しく提供しているため、プロパティを別の場所にバインドしてMyBoolFieldも問題なく機能します。これは、このコンテキストでバインドすることだけの問題のようです。
4

1 に答える 1

0

わかりました、この投稿を読むと、それは WinRT の既知の制限であるように思われます。その投稿のOPがそれについて何か言ったので、私も試してみたいことの1つです。Selfバインディングの使用、および使用Path=DataContext.MyBoolField

さらに読むと、これは WinRT が構築された Silverlight の制限です。したがって、これは WinRT でも機能する回避策です。

于 2012-10-02T11:24:02.287 に答える