2016-05-03 7 views
0



Ich habe eine Style-Vorlage für mein Schaltflächen in meiner app, die wie folgt aussieht:WPF Button und MouseEnter-/-Verlassen-Ereignis

<Style TargetType="{x:Type Button}"> 
      <Setter Property="OverridesDefaultStyle" Value="true"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type Button}"> 
         <Border Name="Border"> 
          <ContentPresenter RecognizesAccessKey="True"/> 
         </Border> 
         <ControlTemplate.Triggers> 
          <Trigger Property="IsKeyboardFocused" Value="true"> 
           <Setter TargetName="Border" Property="BorderBrush" Value="#ffffff" /> 
          </Trigger> 
          <Trigger Property="IsDefaulted" Value="true"> 
           <Setter TargetName="Border" Property="BorderBrush" Value="#ffffff" /> 
          </Trigger> 
          <Trigger Property="IsMouseOver" Value="true"> 
           <Setter TargetName="Border" Property="Background" Value="Transparent" /> 
          </Trigger> 
          <Trigger Property="IsPressed" Value="true"> 
           <Setter TargetName="Border" Property="Background" Value="Transparent" /> 
           <Setter TargetName="Border" Property="BorderBrush" Value="#ffffff" /> 
          </Trigger> 
          <Trigger Property="IsEnabled" Value="false"> 
           <Setter TargetName="Border" Property="Background" Value="Transparent" /> 
           <Setter TargetName="Border" Property="BorderBrush" Value="#ffffff" /> 
           <Setter Property="Foreground" Value="Transparent"/> 
          </Trigger> 
         </ControlTemplate.Triggers> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

Jetzt habe ich eine MouseEnter- und ein Leave-Ereignis setzen wollte in einigen meiner Tasten und ändern Sie ihren Hintergrund, etc. im laufenden Betrieb. Wenn ich den Style deaktiviere, funktioniert alles wie erwartet (außer dass die Buttons den Rahmen und den blauen Hintergrund des Standardstils erhalten).

Nun meine Frage wäre: „Wie kann ich den Stil auf eine randlose, transparente Schaltfläche ohne blauen Hintergrund auf Mouseover und erhalten die MouseEnter- und Leave Feuer zu ändern, so dass ich den Hintergrund programmatisch festlegen

Antwort

1

Sie hinzufügen sollten? zusätzliche Stile für die Schaltflächen, die Sie anders als der Rest reagieren wollen, dann die Auslöser wie Hintergründe in Ihrem eingefügten Code verwenden, zu ändern.

<Style x:Key="diffrentButton" TargetType="{x:Type Button}"> 

...

+0

Klingt gut, aber das Problem ist, dass Die buttonbackgrounds sind Polygone, die on-the-fly erstellt werden, daher kann ich XAML-tri nicht verwenden ggers ... Ich wollte programmgesteuert Änderungen vornehmen. Diese Polygone befinden sich unterhalb (ZIndex -1) der Schaltflächen und sind transparent wie die Schaltflächen. Wenn sie einen Mauszeiger haben, sollen sie eine bestimmte Farbe erhalten. wie ich schon sagte, es funktioniert schon ohne styletemplates ... fast .... –