注関連する質問をしました: DataTrigger と EventTrigger を組み合わせる方法は?
複数の項目を含むリスト ボックスがあります。アイテムのクラスは を実装INotifyPropertyChanged
し、プロパティを持っていますIsAvailable
。このプロパティを使用して、リスト内の使用できないオプションを別の色で示します。
ただし、選択したアイテムが使用できない場合は、前景色を赤にする必要があります。
<ListBox>
<ListBox.Resources>
<DataTemplate DataType="{x:Type local:InstitutionViewModel}">
<TextBlock Name="Name" Text="{Binding Name}"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsAvailable}" Value="False">
<Setter TargetName="Name" Property="Foreground" Value="#888"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ListBox.Resources>
</ListBox>
上記のデータ トリガーを使用して、利用できないアイテムをグレー表示します。
私が直面している問題は、アイテムが選択されているという事実が、テンプレートがバインドされている基になるデータとは何の関係もないということです。Trigger
私が本当に欲しいのは、依存関係プロパティ ( ListBoxItem.IsSelected
) とDataTrigger
バインドされたデータ項目の両方をサポートするある種のマルチトリガーです。
ビューモデルに選択の概念を導入せずにこれを行うことはできますか?
利用できない項目を無効にしない理由を知りたい人は、利用できないオプションを選択できることがアプリケーションの要件であることを理解してください。実際にはいくつかのリスト ボックスがあり、1 つのリスト ボックスを選択すると、他のリスト ボックスの内容が影響を受けます。以前の選択に基づいてアイテムが無効にされた場合、ユーザーは考えを変えたり、さまざまな組み合わせを検討したりできないため、アイテムを無効にすることはできません。