none
Trigger funktionieren nicht RRS feed

  • Frage

  • Hallo,

    ich lerne gerade die Triggers in WPF kennen. Ich wollte die Frage stellen, warum diese bei mir nicht funktionieren, stelle aber gerade fest, daß lediglich die Hintergrundfarbe des Buttons nicht auf Grün gesetzt wird, sondern er dieses standardmäßige Hellblau erhält. Hat man eine Chance, den Button-Hintergrund beim MouseOver doch noch anders zu setzen?

    <Window x:Class="Triggers.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525">
      
    	<Window.Resources>
    		<Style TargetType="{x:Type Button}">
    			<Setter Property="Background" Value="Yellow" />
    			<Style.Triggers>
    				<Trigger Property="IsMouseOver" Value="True">
    					<Setter Property="Background" Value="Green" />
    					<Setter Property="Foreground" Value="Red" />
    					<Setter Property="BorderThickness" Value="8" />
    				</Trigger>
    			</Style.Triggers>
    		</Style>
    		
    	</Window.Resources>
    	
    	<Grid>
    		<Button Content="Streif mich!" Margin="40" Height="50"/>
    	</Grid>
    </Window>
    

    Heiko

    Mittwoch, 30. Juli 2014 13:31

Antworten

  • Hallo,
    in WPF hat fast jedes Control ein Template. In diesem sind ebenfalls Trigger definiert, die u.A. auch den Hover- und MouseDown-Effekt hervor rufen.

    In VS 2010 oder neuer kannst du einen Rechtsklick auf den Button machen und Vorlage bearbeiten > Kopie bearbeiten... wählen. Damit kannst du das Standardtemplate im XAML generieren lassen. Dort findest du dann auch die Trigger für den Hintergrund.

    > Ab .NET 4.5 findest du keine Trigger mehr, sondern einen VisualStateManager. Dieser ist nicht ganz so frei anpassbar, bietet aber häufig eine einfachere Möglichkeit die Styles zu bearbeiten. Die Trigger funktionieren trotzdem, du kannst dir diese aus einem .NET 4.0 Projekt hohlen. (Über Projekt > Eigenschaften umstellen oder im Neues Projekt Fenster festlegen.)

    Siehe auch: Stile und Vorlagen


    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    • Als Antwort markiert Heiko65456465 Donnerstag, 7. August 2014 12:49
    Sonntag, 3. August 2014 20:00
    Moderator

Alle Antworten

  • Hallo,
    in WPF hat fast jedes Control ein Template. In diesem sind ebenfalls Trigger definiert, die u.A. auch den Hover- und MouseDown-Effekt hervor rufen.

    In VS 2010 oder neuer kannst du einen Rechtsklick auf den Button machen und Vorlage bearbeiten > Kopie bearbeiten... wählen. Damit kannst du das Standardtemplate im XAML generieren lassen. Dort findest du dann auch die Trigger für den Hintergrund.

    > Ab .NET 4.5 findest du keine Trigger mehr, sondern einen VisualStateManager. Dieser ist nicht ganz so frei anpassbar, bietet aber häufig eine einfachere Möglichkeit die Styles zu bearbeiten. Die Trigger funktionieren trotzdem, du kannst dir diese aus einem .NET 4.0 Projekt hohlen. (Über Projekt > Eigenschaften umstellen oder im Neues Projekt Fenster festlegen.)

    Siehe auch: Stile und Vorlagen


    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    • Als Antwort markiert Heiko65456465 Donnerstag, 7. August 2014 12:49
    Sonntag, 3. August 2014 20:00
    Moderator
  • Hallo Tom,

    danke für die Info, funktioniert wunderbar wie du es für VS2010 beschrieben hast, auch in VS2012 Express für Desktop (Update 4) und Projekt-Zielframework 4.5. Den VisualStateManager finde ich hier nicht.

    Gruß
    Heiko

    Donnerstag, 7. August 2014 12:46