Ich erstelle ein Ressourcenwörterbuch für meine Anwendung, wo ich einige "Symbol + Text" -Schaltflächen haben werde. Da sie alle gleich aussehen werden (außer für das Symbol und Text), habe ich einen generischen Stil geschaffen als Basis für die andere zu dienen:Verwenden eines generischen Stils als Basis vs. benutzerdefiniertes Benutzersteuerelement
<!-- Generic ActionButtonStyle -->
<Style x:Key="ActionButtonStyle" TargetType="{x:Type Button}">
<!-- some setter properties -->
<Setter Property="ContentTemplate" Value="{DynamicResource ButtonDataTemplate}"/>
</Style>
<DataTemplate x:Key="ButtonDataTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="24" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Image Source="{Binding Source}"
Stretch="Uniform"
Grid.Column="0"
Margin="2"/>
<TextBlock Text="{Binding text}"
TextWrapping="Wrap"
Grid.Column="1"
Margin="2"
VerticalAlignment="Center"/>
</Grid>
</DataTemplate>
Und ich habe ein paar Bilder für die Symbole:
<!-- Icons -->
<ImageSource x:Key="textToSpeech">Images/GreyIcons/TextToSpeech.png</ImageSource>
<ImageSource x:Key="play">Images/GreyIcons/Play.png</ImageSource>
<ImageSource x:Key="playSound">Images/GreyIcons/PaySound.png</ImageSource>
.
.
.
.
<ImageSource x:Key="group">Images/GreyIcons/Goup1.png</ImageSource>
Und ich würde gerne individuelle Stile für jede Schaltfläche (entsprechend jedem Symbol) erstellen. Etwas wie dieses:
<!-- Specific ActionButtonStyles -->
<Style x:Key="TextToSpeechButtonStyle" TargetType="{x:Type Button}" BasedOn="{StaticResource ActionButtonStyle}">
<Setter Property="Content">
<Setter.Value>
<Image Source="{StaticResource textToSpeech}"
</Setter.Value>
</Setter>
</Style>
Ich weiß, dass dies nicht funktioniert .. Wie soll ich es tun? Soll ich ein benutzerdefiniertes Benutzersteuerelement für die generische Schaltfläche erstellen? Der Text ist für ein Objekt in meinem Modell bindend, ebenso der Befehl (an eine Aktion).
Ich weiß das, aber welchen Setter sollte ich verwenden? (Irgendein Code fehlte, ich habe gerade meine Frage aktualisiert) – Joana