2012-05-21 4 views
1

У меня есть приложение Silverlight с настраиваемым элементом управления MyDataGrid, который является DataGrid с некоторыми дополнительными функциями.Silverlight: стиль для пользовательского контроля в том же проекте

Это часть проекта, в котором он используется. Он также требует индивидуального стиля. Я могу добавить стиль в словарь словаря стиля и установить TargetType="sdk:DataGrid", который работает.

Однако мой стиль зависит от свойства MyProperty, относящегося к MyDataGrid, поэтому в редакторе появляется предупреждение. Что еще более важно, стили не могут быть просмотрены в дизайнере.

Они работают, когда код запускается.

Мой вопрос: Есть ли способ вытащить локальные элементы управления в словарь ресурсов, а не создавать отдельный проект, скомпилировать его в .dll и потянуть в эту сборку?

Спасибо!

+0

Вы определили generic.xaml для своего класса MyDataGrid? –

+0

нет? У вас есть информация о том, как я буду заниматься этой работой? Я могу найти информацию об этом, но не много ... – nosirrahcd

ответ

1

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

  1. В вашем проекте добавьте папку на корневом уровне под названием Темы.
  2. В папке «Темы» добавьте ResourceDictionary с именем generic.xaml.
  3. Добавьте все стили MyDataGrid в generic.xaml.
  4. Убедитесь, что один из стилей неявный стиль (использование BasedOn - отличное решение здесь).
  5. В конструкторе по умолчанию для MyDataGrid, добавьте строку DefaultStyleKey = typeof(MyDataGrid);

Если вы хотите получить доступ к части стиля (который определен в XAML) из кода, вы должны назвать, что XAML элемент, как «PART_something». Инструменты проектирования понимают синтаксис PART_ *, и это указывает на потребителей библиотек, что при повторной настройке элемента управления вы должны определить требуемые фрагменты с префиксом PART_.

Вот основные сведения о том, как define a custom control.

+0

Отличное решение! Так просто ... Спасибо за помощь! – nosirrahcd

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