WPF - тип динамического управления привязкой данных - PullRequest
2 голосов
/ 02 ноября 2009

У меня есть класс Person. Человек может иметь связанный контроль. Можно ли отобразить элемент управления через привязку данных?

например: Имя: Билл, Элемент управления: TextBox Имя: Боб, Управление: ComboBox Имя: Дэн, Управление: 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

Ответы [ 2 ]

1 голос
/ 02 ноября 2009

Это работает для меня, по крайней мере, изначально:

<ContentControl Content="{Binding Control}"/>

Примечание: если ваш пользовательский интерфейс связывается с этим свойством более чем в одном месте, вы можете получить исключение из-за попытки родительского элемента управления в нескольких местах.

1 голос
/ 02 ноября 2009

Я думаю, что вы могли бы использовать ContentControl в этом случае:

<ContentControl Content="{Binding Control}" />

Это просто сделает все, что вы дадите. Если свойство «Control» этого человека является элементом управления WPF, оно будет отображаться.

...