2009-08-03 78 views
20

ボタン上でMouseOverエフェクトを無効にしようとしているか、少なくともWPFでその色を変更しようとしています。 Window.ResourcesでWPFのボタンでMouseOverエフェクトを無効にするにはどうすればよいですか?

<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> 

、私はすべてのデフォルトの動作をオーバーライドするだろうと思った:

私は、次のスタイルを使用しています。しかし、それはしません。

提案がありますか?

答えて

37

は、あなたのコントロールテンプレートがに沸く何を見て:「私はボタン ...と私のボタンの外観を交換したい」あなたは、言っている

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

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> 

ていることに注意してください。テンプレート内に埋め込まれた別のボタンは使用しません。

+1

それは素晴らしいです、チャーリー。わかった。乾杯。 – jarmond

+0

このチャーリーをありがとう、それは非常に助けてくれました。 – billb

+1

これは私の命を救った、ありがとう。透明なボタンでレイアウトを作成しなければなりませんが、ホバー効果は私の計画を台無しにしました。 – mico

関連する問題