У меня есть класс Person. У человека может быть связанный контроль. Могу ли я отображать управление посредством привязки данных?
например: Name: Bill, Control: TextBox Имя: Bob, Control: ComboBox Имя: Dan, Control: CheckBox
У меня есть следующий xaml в моем ресурсном словаре
<DataTemplate x:Key="PersonTemplate">
<DockPanel >
<TextBlock FontWeight="Bold" Text="Name: " DockPanel.Dock="Left" Margin="5,0,10,0"/>
<TextBlock Text="{Binding FirstName}" Foreground="Green" FontWeight="Bold" />
</DockPanel>
</DataTemplate>
Я хотел бы добавить связанный пользовательский элемент управления в док-панель, можно ли это сделать
Что-то вроде??
<DataTemplate x:Key="PersonTemplate">
<DockPanel >
<TextBlock FontWeight="Bold" Text="Name: " DockPanel.Dock="Left" Margin="5,0,10,0"/>
<TextBlock Text="{Binding FirstName}" Foreground="Green" FontWeight="Bold" />
<Control Type = "{Binding Control}"/>
</DockPanel>
</DataTemplate>
Спасибо Dan
Это работает для меня, по крайней мере изначально:
<ContentControl Content="{Binding Control}"/>
NB: если ваш пользовательский интерфейс связывается с этим свойством более чем в одном месте, вы можете получить исключение из-за попытки родительского элемента управления в нескольких местах.
Я думаю, вы могли бы использовать ContentControl в этом случае:
<ContentControl Content="{Binding Control}" />
Это просто сделает все, что вы ему дадите. Если свойство Person "Control" является элементом управления WPF, оно отображает это.