View Modelを持つListViewがあります。 ItemsSourceは、View Model内のオブジェクトのコレクションです。一部のフラグIsFlagOnに対して、ビューモデルにプロパティが存在します。 ListViewItemがIsMouseOverを検出したときに、View ModelのそのプロパティをTrueに設定したいとします。他のUI要素はこの同じプロパティにバインドされ、MouseOverが切り替わるとビューが変化します。Property Triggerが発生したときにviewmodelプロパティを設定する方法
これをXAMLでどのように達成できますか?
私はこのような何か(ただし、この休憩を)想像:
<Style> <!-- on the ListViewItem -->
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="DataContext.IsFlagOn" Value="True" />
</Trigger>
</Style.Triggers>
</Style>
UPDATE:
エラーが
あるスタイルプロパティ 'IsFlagOn' を解決できません。所有する型がStyleのTargetTypeであることを確認するか、Class.Property構文を使用してPropertyを指定します。
UPDATE(2):
はここで、既存のXAML(以下)のもう少しです。 ListViewがVMのプロパティ(AllItems
)にバインドされていることがわかります。リストの各項目は、各列がバインドされているVMであることに注意してください。 ListView VMまたはItem VMに対するItemContainerStyleバインディングも同様ですか?
<ListView Itemssource="{Binding AllItems}">
<ListView.ItemContainerStyle>
<Style> <!-- on the ListViewItem -->
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="DataContext.IsFlagOn" Value="True" />
</Trigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<!-- ... -->
</GridView>
</ListView.View>
</ListView>
'これは何の例外がありますか? 'IsFlagOn'は依存関係プロパティですか? – PoweredByOrange
エラーは "タイプDataContextが見つかりません"です。 Viewモデルは 'INotifyPropertyChanged'を実装するプレーンクラスなので、' IsFlagOn'は依存性プロパティではありません。 –
OK、実際の例外は何ですか? – PoweredByOrange