XAML Style vereinfachen

  • WPF MVVM
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von VB1963.

    XAML Style vereinfachen

    Neu

    Hallo und Guten Morgen :)

    ich hab diesmal nur ne ganz kurze Frage. Und zwar hab ich diesen Style:

    XML-Quellcode

    1. ​<Style TargetType="{x:Type RepeatButton}" x:Key="VorSpulen">
    2. <Setter Property="Background" Value="Transparent"/>
    3. <Setter Property="Foreground" Value="{DynamicResource VordergrundfarbeBrush}"/>
    4. <Setter Property="Template">
    5. <Setter.Value>
    6. <ControlTemplate TargetType="{x:Type RepeatButton}">
    7. <Border Background="{TemplateBinding Background}" BorderBrush="{DynamicResource VordergrundfarbeBrush}" BorderThickness="0">
    8. <Path Data="xyz" HorizontalAlignment="Center" VerticalAlignment="Center" Name="MeinPfad"/>
    9. </Border>
    10. <ControlTemplate.Triggers>
    11. <Trigger Property="IsMouseOver" Value="True">
    12. <Setter Property="Background" Value="{DynamicResource VordergrundfarbeBrush}"/>
    13. <Setter Property="Foreground" Value="Black"/>
    14. <Setter TargetName="MeinPfad" Property="Fill" Value="Black"/>
    15. </Trigger>
    16. <Trigger Property="IsMouseOver" Value="False">
    17. <Setter Property="Background" Value="Transparent"/>
    18. <Setter Property="Foreground" Value="{DynamicResource VordergrundfarbeBrush}"/>
    19. <Setter TargetName="MeinPfad" Property="Fill" Value="{DynamicResource VordergrundfarbeBrush}"/>
    20. </Trigger>
    21. </ControlTemplate.Triggers>
    22. </ControlTemplate>
    23. </Setter.Value>
    24. </Setter>
    25. </Style>


    Jetzt hab ich sechs Buttons, die diesen Style verwenden sollen, da wirds mal schnell unübersichtlich...

    Kann ich diesen Code für die anderen RepeatButtons wiederverwenden? Das Einzige was sich unterscheiden wird, ist das Path.Fill-Property...

    Es gibt ja sowas wie BasedOn, aber das kann man hier glaube ich nicht verwenden....

    Neu

    kafffee schrieb:

    ich hab diesmal nur ne ganz kurze Frage

    Ersetze einfach die Zeile #15 oben in deinem Stylescript mit:

    XML-Quellcode

    1. <Setter TargetName="MeinPfad" Property="Fill" Value="{Binding Foreground, RelativeSource={RelativeSource TemplatedParent}}"/>
    und gib beim Anwenden des Styles die Eigenschaft ForeGround deine Farbe mit:

    XML-Quellcode

    1. <RepeatButton Style="{DynamicResource VorSpulen}" Foreground="Red" .../>
    ZB. Red ... sollte funktionieren

    Neu

    Ok - dann würde sich die Proprerty Tag dafür anbieten...

    XML-Quellcode

    1. <Setter TargetName="MeinPfad" Property="Data" Value="{Binding Tag, RelativeSource={RelativeSource TemplatedParent}}"/>

    Aufrufen dann so:

    XML-Quellcode

    1. <RepeatButton Style="{DynamicResource VorSpulen}" Height="70" Width="85" Margin="5" Tag="M16 27v-10l-10 10v-22l10 10v-10l11 11z"/>

    Neu

    kafffee schrieb:

    Könnte man statt Tag auch Content nehmen
    Ja geht genau so...

    kafffee schrieb:

    weil ist ja auch ein String
    Content nimmt ein Object auf...

    Die Tag-Property ist aus alten Zeiten mit der man benutzerdefinierte Informationen (Object) mitgeben kann...