私はビジュアル状態を含むリストボックスアイテムテンプレートを持っています。私は、状態をオン/オフ状態のいずれかに設定するDisplayStateBehaviorsを持っています。私の実装はわずか1/2です。最初の表示では、DataContextの値に関係なく、基本状態がアクティブです。 DataContext内のデータが変更されると、適切な状態がアクティブになります。DisplayStateBehaviorはリストボックスアイテムテンプレートの状態遷移を最初に適用していません
リストボックスの最初の表示時に適切な状態を表示する方法を教えてください。
セキュリティ上の理由から、XAMLコードまたはView-Modelコードをコピー/貼り付けすることはできません。
編集::実際のコードをコピーして貼り付けることはできませんが、以下のスケルトンでうまくいけば問題が再現されます。
<DataTemplate x:Key="MyObjectItemTemplate">
<Grid>
<VisualStateManager.VisualStateGroups>
... blend goodness ...
</VisualStateManager.VisualStateGroups>
</Grid>
</DataTemplate>
データコンテキストがメインUIでリストボックスのItemsTemplate属性に関連付けることでデータ・テンプレートに渡される:グローバルに可視資源ファイルで
。
<ListBox ... ItemTemplate="{DynamicResource MyObjectItemTemplate}" .../>
はDisplayStateBehaviorsについて多くを知らないが、クイックフィックスでの私の最初の試みは、DataContextのは、あなたがすべてを設定することになるだろう知っている時にバインドされているプロパティにInvokePropertyChangedになります。あなたのDisplayStateBehaviorがdatacontextのすべてのプロパティに依存していて、datacontextオブジェクトが完全に構築される前にバインドされている場合、datacontextが再び変更されるまで、それ自身をリフレッシュする別の機会はありません。 – Alain
これはこれを嫌う私の計画でしたが、必要なようには見えません。これは私の症状が間違っているか、間違ったアプローチをとっているような気がしますが、これは私の心では一般的な使用例です。もし私のアプローチに欠陥があるなら、私はむしろ「一度正しい」ことを望んでいます。 – PatrickV
これはコードなしでは答えにくいです。私は "DisplayStateBehaviorとは何か"、 "DataContextの形状は何ですか?"、 "DataContextはどのように提供されているか"といった質問を持っています。間違ったことを行うチャンスはたくさんありますが、コードなしでは間違いが起きる可能性はありません。 –