Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Custom Control Template mit mehreren Texten
theSoulT
myCSharp.de - Member



Dabei seit:
Beiträge: 40

Themenstarter:

Custom Control Template mit mehreren Texten

beantworten | zitieren | melden

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
Attachments
private Nachricht | Beiträge des Benutzers
pinki
myCSharp.de - Member

Avatar #avatar-4072.jpg


Dabei seit:
Beiträge: 700
Herkunft: OWL

beantworten | zitieren | melden

Moin theSoulT,
dafür könntest du dir eine von Button abgeleitete Klasse erstellen und in dieser die zusätzlichen (Dependency-) Properties unterbringen.
private Nachricht | Beiträge des Benutzers
theSoulT
myCSharp.de - Member



Dabei seit:
Beiträge: 40

Themenstarter:

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
theSoulT
myCSharp.de - Member



Dabei seit:
Beiträge: 40

Themenstarter:

beantworten | zitieren | melden

Jemand noch eine Idee hier?
private Nachricht | Beiträge des Benutzers
pinki
myCSharp.de - Member

Avatar #avatar-4072.jpg


Dabei seit:
Beiträge: 700
Herkunft: OWL

beantworten | zitieren | melden

Nimm mal DynamicResource statt StaticResource für deine Brush.
private Nachricht | Beiträge des Benutzers
theSoulT
myCSharp.de - Member



Dabei seit:
Beiträge: 40

Themenstarter:

beantworten | zitieren | melden

So einfach gehts, danke
private Nachricht | Beiträge des Benutzers