2010-02-02 4 views
3

Это очень похоже на это question Я спросил раньше. Я надеюсь, что яснее и получаю другой ответчик.WPF - Создайте объект пользовательского интерфейса из DataTemplate

У меня есть объект данных (называемый MockUI). У нее есть шаблон данных (в app.xaml), как это:

<DataTemplate DataType="{x:Type local:MockWI}"> 
    <Button Content="{Binding Name}"/> 
</DataTemplate> 

В моем коде я хочу создать объект пользовательского интерфейса, что шаблон данных. Поэтому у меня есть myMockWI, и я хочу узнать, какой шаблон использовать и получить созданный объект (в этом случае кнопка с содержимым, установленным в myMockWI).

Я попытался просто сделать кнопку:

Button myButton = new Button {Content = myMockWI} 

, но как вы можете догадаться, что создает кнопку, затем помещает другую кнопку внутри этой кнопки (так как шаблон данных применяется). Как я могу получить только одну кнопку?

+0

Можете ли вы потратить немного больше времени на ваш пост .. это немного сбивает с толку. Каков прецедент для этого? Является ли MockWI опечаткой MockUI? Вы пытаетесь программно получить представление (созданное с помощью datatemplate) конкретного экземпляра? – Gishu

+0

@ Гишу: спасибо за подсказку о необходимости лучшего поста. Я думаю, что я решил, что это один, или я бы поставил лучше/больше информации. – Vaccano

ответ

2

Оказывается, мне просто нужно немного подойти к дереву пользовательского интерфейса.

Если я создаю новый ContentControl, тогда он не имеет никакого взгляда на него и берет на себя все, что имеется в datatemplate.

мой код меняется от выше к этому:

ContentControl myControl = new ContentControl {Content = myMockWI}; 
+1

Вы правы в этом. Все, что происходит от ContentControl, также может использовать DataTemplate с DataType, установленным для размещения объекта данных, например. ContentPresenter, ListBox, ListView и т. Д. –

Смежные вопросы