Вопрос по button, mouseevent, styles, wpf – Как отключить эффекты MouseOver для кнопки в WPF?

21

Я пытаюсь отключить эффект MouseOver на кнопках или, по крайней мере, изменить его цвет в WPF.

Я использую следующий стиль:

<Style x:Key="Borderless" TargetType="{x:Type Button}">
            <Setter Property="OverridesDefaultStyle" Value="True"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Button}">
                        <Button Background="{TemplateBinding Control.Background}"
                                Focusable="False">
                            <ContentPresenter
                  Margin="{TemplateBinding Control.Padding}"
                  HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}"
                  VerticalAlignment="{TemplateBinding Control.VerticalContentAlignment}"
                  SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}"
                  ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}"
                  RecognizesAccessKey="True"
                  Content="{TemplateBinding ContentControl.Content}" />
                            </Button>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

в Window.Resources, который, как я думал, переопределит все поведение по умолчанию. Но это не так.

Какие-либо предложения?

Ваш Ответ

1   ответ
39

Посмотрите, к чему сводится ваш шаблон управления:

<ControlTemplate TargetType="{x:Type Button}">
   <Button>
      <ContentPresenter/>
   </Button>
</ControlTemplate>

Вы говорите: "Я хочу заменить вид моей кнопки на ...a button. & Quot; ИспользованиеControlTemplate должен заменить визуальное дерево элемента управления. Таким образом, вы заменяете визуальное дерево существующей кнопки другой кнопкой. Если вы хотите запустить кнопку с нуля, попробуйте использовать кнопку SimpleStyles:

<Style TargetType="{x:Type Button}">
   <Setter Property="SnapsToDevicePixels" Value="true"/>
   <Setter Property="OverridesDefaultStyle" Value="true"/>
   <Setter Property="MinHeight" Value="23"/>
   <Setter Property="MinWidth" Value="75"/>
   <Setter Property="Template">
      <Setter.Value>
         <ControlTemplate TargetType="{x:Type Button}">
            <Border Name="Border" CornerRadius="2" BorderThickness="1"
                    Background="#C0C0C0"
                    BorderBrush="#404040">
               <ContentPresenter Margin="2" 
                                 HorizontalAlignment="Center"
                                 VerticalAlignment="Center" 
                                 RecognizesAccessKey="True"/>
            </Border>
            <ControlTemplate.Triggers>
               <Trigger Property="IsKeyboardFocused" Value="true">
                  <Setter TargetName="Border" 
                          Property="BorderBrush" Value="#202020" />
               </Trigger>
               <Trigger Property="IsDefaulted" Value="true">
                  <Setter TargetName="Border" 
                          Property="BorderBrush" Value="#202020" />
               </Trigger>
               <Trigger Property="IsMouseOver" Value="true">
                  <Setter TargetName="Border" 
                          Property="Background" Value="#808080" />
               </Trigger>
               <Trigger Property="IsPressed" Value="true">
                  <Setter TargetName="Border" 
                          Property="Background" Value="#E0E0E0" />
                  <Setter TargetName="Border" 
                          Property="BorderBrush" Value="#606060" />
               </Trigger>
               <Trigger Property="IsEnabled" Value="false">
                  <Setter TargetName="Border" 
                          Property="Background" Value="#EEEEEE" />
                  <Setter TargetName="Border" 
                          Property="BorderBrush" Value="#AAAAAA" />
                  <Setter Property="Foreground" Value="#888888"/>
               </Trigger>
            </ControlTemplate.Triggers>
         </ControlTemplate>
      </Setter.Value>
   </Setter>
</Style>

Обратите внимание, что этот шаблон создает кнопку самым простым способом: рамку, которая содержит содержимое кнопки. Он не использует другую кнопку, встроенную в шаблон.

Это спасло мне жизнь, спасибо. Я должен просмотреть созданный пользователем макет с прозрачными кнопками, но эффект парения разрушил мои планы.
Это отлично, Чарли. Я получаю это сейчас. Приветствия. jarmond
Спасибо тебе за это, Чарли, это очень помогло.
Гений, наконец-то решение, которое работает для меня, а также позволяет круглые кнопки границ. Большое спасибо :) .
Большое спасибо! :-)

Похожие вопросы