Заполнитель для элемента управления в Silverlight - PullRequest
1 голос
/ 26 октября 2010

Есть ли что-то вроде заполнителя для элемента управления в silverlight? Если у меня есть динамически созданный элемент управления в моей модели представления, как я могу привязать его к некоторому элементу в Xaml? Это правильный путь для достижения этого:

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

Ответы [ 2 ]

2 голосов
/ 27 октября 2010

Не создавать фактические элементы управления динамически.Поместите все, что вам нужно, в свойствах модели представления и привяжите пользовательский интерфейс к этим свойствам.Конечно, вам также понадобится установить DataContext элемента управления на модель представления.Подробнее см. в этом обзоре .

Чтобы ответить более подробно, привяжите содержимое ContentControl к свойству в ViewModel.Это свойство может быть любого типа!Затем в XAML объявите DataTemplate, который будет использоваться для отображения этого свойства;это будет представлять собой «скин», используемый для одевания этого свойства после его привязки.Установите DataTemplate в качестве ContentTemplate ContentControl (или в качестве значения по умолчанию для этого типа ... и т. Д.).DataTemplate может содержать другие элементы управления, другие привязки, что угодно.Это как минимум один способ сделать это, их много.Вам нужно будет задать что-то более конкретное или начать читать по основам.

1 голос
/ 27 октября 2010

У вас может быть заполнитель, заполненный соответствующим дочерним элементом управления в зависимости от типа объекта, который вы пытаетесь показать.Например, вы можете привязать свойство типа Foo в вашей модели представления, и тогда представление автоматически выберет элемент управления FooView для отображения этого свойства.Посмотрите этот другой вопрос и пример кода в связанной статье о том, как это работает - это касается шаблонов данных.Сначала убедитесь, что вы это поняли.

Из вашего другого вопроса Я знаю, что вы на самом деле пытаетесь добавить представления с помощью MEF.По сути, вы пытаетесь добавить шаблоны данных с помощью плагинов MEF.Это более продвинутый вариант использования, который является темой этого вопроса .Ответ на этот вопрос объясняет, как вы можете динамически объединять словари ресурсов (которые содержат информацию о шаблоне данных), предоставляемые плагинами.

...