我一直在尝试根据数据触发器绑定的枚举来设置WPF控件的项目源。
我一直非常不满意,我不确定这是正确的做法:
<DataTrigger Binding="{Binding EnumSetting}" Value="Test">
<Setter TargetName="control" Property="ItemsSource" Value="{Binding Model}" />
</DataTrigger>
我一直在尝试上面的不同版本。任何人都可以帮助或指出我正确的方向。
是否应包装在“&lt;'style'&gt;”中标签,例如,我不认为它应该是,但我不确定为什么这不起作用。
谢谢。
答案 0 :(得分: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>
(除非你在某些控件模板的触发器中,否则你可能想要一个样式。)