Мне нужно добавить различные элементы управления (TextBox/CheckBox/ComboBox и т. Д.) В ItemsControl на основе определенных условий. Каждый элемент в ItemsControl - это пара Name-Value. Имя всегда представлено TextBlock, но Value может быть любым элементом управления пользовательским интерфейсом. Я использую горизонтально выровненную StackPanel для представления каждого элемента. Первый элемент управления в StackPanel остается TextBlock, но второй элемент управления зависит от свойства ItemDataType, установленного в ViewModel во время выполнения.Добавить элементы управления в ItemsControl
Проблема заключается в том, что я не могу назначить разные элементы управления в 2-м элементе StackPanel, используя триггер стиля с свойством ItemDataType.
Код сниппета:
<UserControl.Resources>
<DataTemplate x:Key="TextBoxTemplate">
<TextBox Text="{Binding Path=DataValue}"/>
</DataTemplate>
<DataTemplate x:Key="ComboBoxTemplate">
<ComboBox ItemsSource="{Binding Path=SelectionList}" SelectedValue="{Binding Path=DataValue,Mode=TwoWay}"/>
</DataTemplate>
<DataTemplate x:Key="CheckBoxTemplate">
<CheckBox IsChecked="{Binding Path=DataValue,Mode=TwoWay}" />
</DataTemplate>
<DataTemplate x:Key="ButtonTemplate">
<Button Content="{Binding Path=DataValue}"/>
</DataTemplate>
<DataTemplate x:Key="dynamicTemplate">
<StackPanel Orientation="Horizontal" Tag="{Binding ItemDataType}">
<TextBlock Text="{Binding Path=DataName,Mode=TwoWay}"/>
<ContentControl>
<ContentControl.Style>
<Style TargetType="{x:Type ContentControl}">
<Style.Triggers>
<DataTrigger Binding="{Binding ItemDataType}" Value="TextBox">
<Setter Property="Template" Value="{StaticResource TextBoxTemplate}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</StackPanel>
</DataTemplate>
</UserControl.Resources>
<Grid>
<!-- CONTROL LAYOUT -->
<ItemsControl ItemsSource="{Binding Path=DataList,Mode=TwoWay}" ItemTemplate="{StaticResource dynamicTemplate}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel></StackPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</Grid>
Ошибка я получаю DataTemplate недопустим для ContentControl.Template собственности. Я понимаю, что то, что я делаю, ошибочно, но я хочу помочь сделать это правильно.
Спасибо,
RDV