3

我一直在尝试基于数据触发器也绑定的枚举来设置 WPF 控件的项目源。

我一直很不成功,我不确定这是正确的方法:

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

我一直在尝试上述的不同版本。任何人都可以帮助或指出我正确的方向。

例如,它是否应该包含在“<'style'>”标签中,我认为不应该这样,但我不确定为什么这不起作用。

谢谢你。

4

1 回答 1

6

主要是你需要观察DP 优先级,这意味着你不能ItemsControl直接在 (或其子类)上设置 ItemsSource ,因为它会覆盖触发器。相反,您应该使用默认设置器。

<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 回答