none
WPF Button mit Trigger und Text RRS feed

  • Frage

  • Hallo zusammen,

    ich versuche gerade einen Button zu erstellen der sein Hintergrundbild ändern soll wenn ich drauf geklickt habe. Das funktioniert soweit, das Problem ist, das der Text nicht mehr angezeigt wird. Hier mein Code:

    <Button Content="Akutelles" Height="55" HorizontalAlignment="Left" Margin="6,6,0,0" Name="button1" VerticalAlignment="Top" Width="70" BorderBrush="{x:Null}">

    <Button.Template>

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

    <Grid>

    <Image Name="Normal" Source="/Test;component/Images/button1.png"/>

    </Grid>

    <ControlTemplate.Triggers>

    <Trigger Property="IsPressed" Value="True">

    <Setter TargetName="Normal" Property="Visibility" Value="Hidden"/>

    <Setter TargetName="Released" Property="Visibility" Value="Visible"/>

    </Trigger>

    </ControlTemplate.Triggers>

    </ControlTemplate>

    </Button.Template>

    </Button>

    Gibt es eine Möglichkeit, die Eigenschaften irgendwie zu speichern, sodass ich sie nicht auf jeden Button einzeln übertragen muss? (Hab ne Menge)..

    Danke

    Mittwoch, 7. Dezember 2011 12:37

Alle Antworten

  • Hi,

    zur Frage: Du kannst entweder Dein ControlTemplate als Resource zB in App.xaml (oder in dem Window oder UserControl) definieren und dann bei den individuellen Buttons mit Template="{StaticResource MyButtonTemplate}" zuweisen oder Du definierst einen Style mit TargetType="{x:Type Button}" (auch als Resource, ohne x:Key), der sich automatisch auf alle Buttons im 'Einzugsbereich' auswirkt.

    In beiden Fällen müssen die Buttons wirklich komplett identisch aussehen (keine individuellen Bilder; Content kann bei Verwendung des ContentPresenter natürlich variieren).

    Das mit dem Text verstehe ich nicht. In dem geposteten Code gibt es keinen Text/Content und auch ein Element mit dem Namen "Released" sehe ich nirgends.

    Gruß
    Jürgen


    Mittwoch, 7. Dezember 2011 14:53
  • Hi,

    ich kann mich Jürgen nur anschließen. Solltest Du jedoch nur einen Teil gepostet haben, dann achte auf die Reihenfolge der Controls im Template !

    Wenn Du beispielsweise folgende Situation hast:

    <Grid>
      <Image Name="Normal" ... />
      <ContentPresenter ... />
      <Image Name="Released" ... />
    </Grid>

    dann verdeckt nach Deiner Trigger-Definition das zweite Image den Button-Inhalt. Apropos zweites Image ... Du definiert den Trigger für "IsPressed". Ich würde daher das Image nicht gerade als "Released" bezeichnen.

    Viele Grüße

    Christoph

    Donnerstag, 8. Dezember 2011 07:13