Laden...

Custom Control Template mit mehreren Texten

Erstellt von theSoulT vor 2 Jahren Letzter Beitrag vor 2 Jahren 290 Views
T
theSoulT Themenstarter:in
64 Beiträge seit 2018
vor 2 Jahren
Custom Control Template mit mehreren Texten

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&#xa;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

709 Beiträge seit 2008
vor 2 Jahren

Moin theSoulT,
dafür könntest du dir eine von Button abgeleitete Klasse erstellen und in dieser die zusätzlichen (Dependency-) Properties unterbringen.

T
theSoulT Themenstarter:in
64 Beiträge seit 2018
vor 2 Jahren

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?

T
theSoulT Themenstarter:in
64 Beiträge seit 2018
vor 2 Jahren

Jemand noch eine Idee hier? 🙂

709 Beiträge seit 2008
vor 2 Jahren

Nimm mal DynamicResource statt StaticResource für deine Brush.

T
theSoulT Themenstarter:in
64 Beiträge seit 2018
vor 2 Jahren

So einfach gehts, danke 🙂