2009-08-03 18 views
20

Düğmelerdeki MouseOver efektini devre dışı bırakmaya veya en azından WPF'de rengini değiştirmeye çalışıyorum. Window.Resources içindeWPF'deki bir Düğme üzerindeki MouseOver efektlerini nasıl devre dışı bırakırsınız?

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

, ben tüm varsayılan davranışları geçersiz düşündüm:

aşağıdaki stili kullanıyorum. Ama öyle değil.

Herhangi bir öneriniz var mı? Kontrol şablon aşağı kaynar neyi

cevap

37

Görünüş: Sen söylüyorsun

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

"Ben ile benim düğmenin görünümünü değiştirmek istiyor ... bir düğme." ControlTemplate'un kullanımı, bir kontrolün görsel ağacının yerini almaktır. Yani mevcut düğmenin görsel ağacını başka bir düğme ile değiştiriyorsunuz. Sıfırdan bir düğme başlatmak istiyorsanız, SimpleStyles düğmesini kullanarak deneyin: düğme içeriğe sahip bir sınır: Bu şablon düğmeye olabildiğince basit bir şekilde oluşturur

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

Bildirim söyledi. Şablonun içine gömülü başka bir düğme kullanmaz.

+1

Bu harika, Charlie. Şimdi anladım. Şerefe. – jarmond

+0

Bu Charlie için teşekkürler, çok yardımcı oldu. – billb

+1

Bu hayatımı kurtardı, teşekkürler. Saydam düğmelerle bir kullanıcının oluşturduğu düzeni gözden geçirmeliyim, ancak vurgulu etkisi planlarımı mahvetti. – mico

İlgili konular