55

関連する質問をしました: 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 つのリスト ボックスを選択すると、他のリスト ボックスの内容が影響を受けます。以前の選択に基づいてアイテムが無効にされた場合、ユーザーは考えを変えたり、さまざまな組み合わせを検討したりできないため、アイテムを無効にすることはできません。

4

3 に答える 3

18

DataGridRowバインディングモードを次のように変更して使用するにはSelf

Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=... 
于 2010-12-01T04:33:40.087 に答える