2010-11-27 3 views
1

Я относительно новичок в сценарии WPF, и у меня возникла проблема с пониманием того, как стили повторно используются среди элементов управления.Повторное использование WPF-стиля

Мой пример ситуации это, я делаю элемент управления, которому нужна кнопка Toggle. Я хочу, чтобы этот ToggleButton выглядел как кнопка «expand» на TreeViewItem. Как применить стиль кнопки TreeViewItem к моей собственной кнопке?

Из моего поиска У меня возникает ощущение, что это невозможно без копирования XAML, но я не могу оправдать себя, почему кто-то сделает ограниченным пользовательский интерфейс.

Заранее спасибо.

ответ

2

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

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

Когда я начинал работу в WPF, я нашел this tutorial , чтобы быть весьма полезным введением в процесс.

Я бы рекомендовал получить копию ShowMeTheTemplate, чтобы предоставить вам доступ к большинству шаблонов по умолчанию для элементов управления, поскольку это сэкономит много основной работы и даст вам представление о том, как работают элементы управления.

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

Пример:

(В словаре ресурсов, например App.Resources):

<Style x:Key="myStyle" TargetType="Button"> 
    <Setter Property="Width" Value="70" /> 
</Style> 

Используется в кнопках:

<Button Style="{StaticResource myStyle}" /> 

Надеется, что это помогает вам начать работу.

+0

Спасибо за ваш ответ! Подсказка о ShowMeTheTemplate полезна. Я думаю, что довольно странно, что в среде, предназначенной для MVVM, они даже не думали о разделении стиля и разметки ... – 2010-11-27 19:54:22

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