Hey zusammen,
ich hoffe, ihr könnt mich bei einem weiteren Problem in meinem Projekt unterstützen.
Ich habe mir ein ControlTemplate als Grid Ressource erstellt (Im Anhang auch ein Screenshot von dem Ergebnis):
<Grid.Resources>
<Style TargetType="Button">
<Setter Property="Background" Value="Aqua"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Grid>
<Rectangle Grid.ColumnSpan="3" Grid.RowSpan="2" RadiusX="10" RadiusY="10" Fill="AliceBlue" Margin="10,20"/>
<Grid Margin="10,20">
<Grid Width="30" Height="50" Background="{StaticResource clrPrimary}" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="20,0">
<Grid.Effect>
<DropShadowEffect BlurRadius="20" RenderingBias="Quality" ShadowDepth="1"/>
</Grid.Effect>
<MaterialDesign:PackIcon Kind="About" VerticalAlignment="Bottom" HorizontalAlignment="Center" Margin="0, 5"/>
</Grid>
<TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content}" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="10" FontFamily="Calibri"/>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,20,0,0">
<TextBlock Text="40/100" HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="Calibri" FontSize="35"/>
</StackPanel>
</Grid>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Grid.Resources>
Hier sind zwei Texte und ein Logo, welche ich gern beim Aufruf des Template in xaml unterschiedlich belegen würde. Dazu hab ich schon die Info mit dem Binding an den Content gefunden, was auch super funktioniert. Aber wie kann ich den zweiten Text und das Logo ändern?
<Button Grid.Column="0" Grid.Row="1" Content="Offene Geräte
Eigen/Gesamt"/>
Ich benötige dann ja sowas wie Content2 = "" oder so. Kann man eigene Properties erstellen oder habt ihr eine Idee, wie ich hier weiterkomme? Hab dazu leider nichts gefunden.
Lg TheSoulT
Moin theSoulT,
dafür könntest du dir eine von Button abgeleitete Klasse erstellen und in dieser die zusätzlichen (Dependency-) Properties unterbringen.
Hallo pinki,
das sieht doch gut aus. Danke dir!
Jetzt hab ich dabei noch das Problem, dass ich eine StaticResource nutze für meine Hauptfarbe (Siehe Zeile 10) die ich im ganzen Projekt nutze. Diese ist in der App.xaml definiert wie folgend:
<Application.Resources>
<SolidColorBrush x:Key="clrPrimary" Color="#f7ba0b" />
</Application.Resources>
Möchte ich jetzt den CustomButton aufrufen, bekomme ich die Fehlermeldung:
Die Ressource mit dem Namen "clrPrimary" kann nicht gefunden werden...
Den CustomButton an sich habe ich in der Generic.xaml erstellt. Dort wird jetzt auch die clrPrimary für den Background gesetzt.
Hast du oder jemand anderes hier auch noch einen Tipp?
Jemand noch eine Idee hier? 🙂
Nimm mal DynamicResource
statt StaticResource
für deine Brush
.
So einfach gehts, danke 🙂