2012-05-28 79 views
2

我一直在尝试根据数据触发器绑定的枚举设置WPF控件的项目源。使用数据触发器设置WPF中的ItemsSource属性

我一直非常不成功的,而且我不确定这是做了正确的方式:

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

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

例如,它应该被包裹在“<”风格的标签中,我不认为它应该是,但我不确定为什么这不起作用。

谢谢。

回答

5

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

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

(你可能需要一个样式,除非你是在一些控制模板的触发器。)

相关问题