У меня есть пользовательский элемент управления, у которого есть ContentPresenter, в качестве содержимого которого будет выбран произвольный объект. Этот объект не имеет никаких ограничений на его тип, поэтому я хочу, чтобы этот элемент управления отображал его содержимое на основе любых шаблонов данных, определенных приложением, или шаблонов данных, определенных в Generic.xaml. Если в приложении я определяю какой-либо шаблон данных (без ключа, потому что я хочу, чтобы он автоматически применялся к объектам этого типа) и использую пользовательский элемент управления, связанный с объектом этого типа, шаблон данных применяется автоматически. Но у меня есть некоторые шаблоны данных, определенные для некоторых типов в generic.xaml, где я определяю собственный стиль элемента управления, и эти шаблоны не применяются автоматически. Вот файл generic.xaml:
<DataTemplate DataType="{x:Type PredefinedType>
<!-- template definition -->
<DataTemplate>
<Style TargetType="{x:Type CustomControl}">
<!-- control style -->
</Style>
Если я установлю объект типа «PredefinedType» в качестве содержимого в contentpresenter, шаблон данных не будет применен. Однако, если это работает, если я определю шаблон данных в app.xaml для приложения, использующего пользовательский элемент управления.
У кого-нибудь есть подсказка? Я действительно не могу предположить, что пользователь элемента управления определит этот шаблон данных, поэтому мне нужен какой-то способ связать его с пользовательским элементом управления.