2013-06-17 4 views
1

Я хочу определить стиль для ButtonBase, а затем расширить этот стиль по-разному для Togglebutton и Button. Я хочу что-то вроде этого:Шаблоны управления доступом между различными типами кнопок

<!-- Base Style --> 
<Style x:Key="ButtonBaseStyle" TargetType="ButtonBase"> 
    <Style.Resources> 
     <ControlTemplate x:Key="NormalStyle" TargetType="ButtonBase">...</ControlTemplate> 
     <ControlTemplate x:Key="HoverStyle" TargetType="ButtonBase">...</ControlTemplate> 
    </Style.Resources> 
    <Style.Triggers> 
     <Trigger Property="IsMouseOver" Value="True"> 
     <Setter Property="Template" Value="{StaticResource HoverStyle}" /> 
     </Trigger> 
     <Trigger Property="IsMouseOver" Value="False"> 
     <Setter Property="Template" Value="{StaticResource NormalStyle}" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

<!-- Toggle Button --> 
<Style x:Key="ToggleButtonStyle" TargetType="ToggleButton" BasedOn="ButtonBaseStyle"> 
    <Style.Resources> 
     <ControlTemplate x:Key="CheckedStyle" TargetType="ToggleButton">...</ControlTemplate> 
    </Style.Resources> 
    <Style.Triggers> 
     <!-- ToggleButton should inherit the triggers defined in ButtonBaseStyle; adding the additional trigger specific to ToggleButton here --> 
     <Trigger Property="IsChecked" Value="True"> 
     <Setter Property="Template" Value="{StaticResource CheckedStyle}" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

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

ответ

1

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

Заменить:

BasedOn="ButtonBaseStyle" 

С:

BasedOn="{StaticResource ButtonBaseStyle}" 
+0

Спасибо. Это было глупо со мной! – 341008

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