3

データトリガーもバインドされている列挙型に基づいて、WPF コントロールの項目ソースを設定しようとしています。

私は非常に失敗しており、これが正しい方法であるかどうか確信が持てません:

<DataTrigger Binding="{Binding EnumSetting}" Value="Test">
      <Setter TargetName="control" Property="ItemsSource" Value="{Binding Model}" />
</DataTrigger>

上記のさまざまなバージョンを試しています。誰かが私を助けたり、正しい方向に向けたりしてくれませんか。

たとえば、「<'style'>」タグでラップする必要があるとは思いませんが、これが機能しない理由はわかりません。

ありがとうございました。

4

1 に答える 1

6

主にDP precedenceを監視する必要があります。つまり、トリガーをオーバーライドするため、ItemsSource ItemsControl(またはそのサブクラス) を直接設定することはできません。代わりに、デフォルトのセッターを使用する必要があります。

<ItemsControl>
     <ItemsControl.Style>
          <Style TargetType="ItemsControl">
               <Setter Property="ItemsSource" Value="SomeDefaultHere"/>
               <Style.Triggers>
                   <DataTrigger ...>
                        <Setter Property="ItemsSource" Value="SomeOverrideHere"/>
                   </DataTrigger>
               </Style.Triggers>
          </Style>
    </ItemsControl.Style>
</ItemsControl>

(何らかのコントロール テンプレートのトリガーでない限り、おそらくスタイルが必要です。)

于 2012-05-28T13:10:31.887 に答える