Я хочу создать пользовательский элемент управления, который содержит одно поле со списком и элемент управления содержимым. Выбор, сделанный в поле со списком, должен определять шаблон данных, который будет использовать элемент управления содержимым. Я прочитал эту статью, которая в значительной степени демонстрирует то, что я пытаюсь достичь.
Комбинированное поле заполнено значениями enum ModelType
, которые могут быть Person
или Company
. Если пользователь выбирает Person
, элемент управления содержимым должен использовать шаблон данных personTemplate
; и companyTemplate
для Company
.
Я застрял с кодом XAML для управления контентом. Вот что я создал, но я не могу заставить его работать:
<UserControl.Resources>
...
<DataTemplate x:Key="personTemplate" ...>
<DataTemplate x:Key="companyTemplate" ...>
...
</UserControl.Resources>
...
<ContentControl x:Name="Account">
<ContentControl.ContentTemplate>
<DataTemplate>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding AccountType}" Value="Person">
<!-- I doubt the Value property is set correctly. -->
<!-- It should be a value of an enum ModelType -->
<Setter
TargetName="Account"
Property="ContentTemplate"
Value="{StaticResource personTemplate}" />
<!-- The setter is unaware of the target name, i.e. content control -->
</DataTrigger>
<DataTrigger Binding="{Binding AccountType}" Value="Company">
<Setter
TargetName="Account"
Property="ContentTemplate"
Value="{StaticResource companyTemplate}" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>
Пожалуйста, помогите, спасибо.