Можно ли создать BulletDecorator с использованием текущей темы? - PullRequest
0 голосов
/ 25 марта 2012

Я использую хорошо известную технику стилизации списка, чтобы он выглядел как группа переключателей. Стиль представляет BulletDecorator для каждого элемента в списке. Чтобы сделать это, мне нужно сослаться на конкретную сборку темы, например PresentationFramework.Aero.dll, а затем явно использовать ее в моем стиле.

xmlns:theme="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"

<BulletDecorator.Bullet>
    <theme:BulletChrome 
        Background="{TemplateBinding Control.Background}" 
        BorderBrush="{TemplateBinding Control.BorderBrush}" 
        IsRound="True" 
        RenderMouseOver="{TemplateBinding UIElement.IsMouseOver}" 
        IsChecked="{TemplateBinding ListBoxItem.IsSelected}" />
</BulletDecorator.Bullet>

Есть ли способ создать BulletDecorator, стилизованный под текущую тему или тему по умолчанию, чтобы мне не нужно было ссылаться на явную тему?

1 Ответ

1 голос
/ 25 марта 2012

Вам не нужно заново создавать шаблон RadioButton ... почему бы вам просто не использовать RadioButton в ItemContainerStyle?

<Style x:Key="RadioButtonGroup" TargetType="ListBox">
  <Setter Property="ItemContainerStyle">
    <Setter.Value>
      <Style TargetType="ListBoxItem">
        <Setter Property="Template">
          <Setter.Value>
            <ControlTemplate TargetType="ListBoxItem">
              <RadioButton IsChecked="{TemplateBinding IsSelected}" Content="{TemplateBinding Content}" GroupName="ListBoxItems" />
            </ControlTemplate>
          </Setter.Value>
        </Setter>
      </Style>
    </Setter.Value>
  </Setter>
</Style>

Обратите внимание, что существует проблема сэтот подход: если вы используете этот стиль для нескольких ListBoxes в одном и том же окне, все RadioButtons будут взаимоисключающими, поскольку они будут использовать один и тот же GroupName.См. эту статью для обхода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...