2009-08-03 11 views
20

मैं डब्ल्यूपीएफ में बटन पर माउसओवर प्रभाव को अक्षम करने की कोशिश कर रहा हूं, या कम से कम इसका रंग बदल सकता हूं।आप डब्ल्यूपीएफ में बटन पर माउसओवर प्रभाव कैसे अक्षम करते हैं?

<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 में

, जो मैंने सोचा था कि सभी डिफ़ॉल्ट व्यवहार को ओवरराइड होगा:

मैं निम्नलिखित शैली का उपयोग कर रहा हूँ। लेकिन ऐसा नहीं है।

कोई सुझाव?

उत्तर

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

संबंधित मुद्दे