属性 = ItemControl.ItemTemplate 的数据触发器
DataTrigger with Property = ItemControl.ItemTemplate
我在使此绑定生效时遇到了一些问题。我在 SettingCollection 中有几个对象,它们都有一个枚举 属性。我想根据 this 的值生成一个控件。但是当我用数据触发器检查这个值时它不起作用。
任何人都可以提供一些关于我如何才能做到这一点的见解吗?
<Window.Resources>
<DataTemplate x:Key="CheckboxNode">
<CheckBox IsChecked="{Binding Status}" Margin="0,5,0,0">
<ContentPresenter Content="{Binding DisplayName}"/>
</CheckBox>
</DataTemplate>
<DataTemplate x:Key="TextboxNode">
<TextBox Text="Badgers"></TextBox>
</DataTemplate>
</Window.Resources>
<ItemsControl ItemsSource="{Binding SettingCollection}">
<ItemsControl.Style>
<Style TargetType="ItemsControl">
<Style.Triggers>
<DataTrigger Binding="{Binding Type}" Value="checkbox">
<Setter Property="ItemsControl.ItemTemplate" Value="{StaticResource CheckboxNode}" />
</DataTrigger>
<DataTrigger Binding="{Binding Type}" Value="textbox">
<Setter Property="ItemsControl.ItemTemplate" Value="{StaticResource TextboxNode}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ItemsControl.Style>
</ItemsControl>
如果 Type 属性 在 SettingNode class 中,并且 SettingCollection 是 SettingNode 对象的集合,那么您在 Datatriggers 中的绑定是不正确的。 DataTriggers 将在 ItemsControl DataContext(class with SettingCollection)中查找类型 属性。尝试使用 DataTemplateSelector https://msdn.microsoft.com/en-us/library/system.windows.controls.datatemplateselector(v=vs.110).aspx
我在使此绑定生效时遇到了一些问题。我在 SettingCollection 中有几个对象,它们都有一个枚举 属性。我想根据 this 的值生成一个控件。但是当我用数据触发器检查这个值时它不起作用。
任何人都可以提供一些关于我如何才能做到这一点的见解吗?
<Window.Resources>
<DataTemplate x:Key="CheckboxNode">
<CheckBox IsChecked="{Binding Status}" Margin="0,5,0,0">
<ContentPresenter Content="{Binding DisplayName}"/>
</CheckBox>
</DataTemplate>
<DataTemplate x:Key="TextboxNode">
<TextBox Text="Badgers"></TextBox>
</DataTemplate>
</Window.Resources>
<ItemsControl ItemsSource="{Binding SettingCollection}">
<ItemsControl.Style>
<Style TargetType="ItemsControl">
<Style.Triggers>
<DataTrigger Binding="{Binding Type}" Value="checkbox">
<Setter Property="ItemsControl.ItemTemplate" Value="{StaticResource CheckboxNode}" />
</DataTrigger>
<DataTrigger Binding="{Binding Type}" Value="textbox">
<Setter Property="ItemsControl.ItemTemplate" Value="{StaticResource TextboxNode}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ItemsControl.Style>
</ItemsControl>
如果 Type 属性 在 SettingNode class 中,并且 SettingCollection 是 SettingNode 对象的集合,那么您在 Datatriggers 中的绑定是不正确的。 DataTriggers 将在 ItemsControl DataContext(class with SettingCollection)中查找类型 属性。尝试使用 DataTemplateSelector https://msdn.microsoft.com/en-us/library/system.windows.controls.datatemplateselector(v=vs.110).aspx