J'ai créé un contrôle personnalisé pour le bouton. Mon contrôle est le type de IconButton. Mais j'ai défini le style SuccessButton pour le type Button. Je ne change pas TargetType du bouton à IconButton parce que BaseOn est mis en place au bouton de mahapps.Bouton personnalisé avec style pour un autre type de cible
Voici mon code:
Style.xaml:
<Style x:Key="SuccessButton" TargetType="Button" BasedOn="{StaticResource MetroFlatButton}">
<Setter Property="Background" Value="#FF449D44"/>
<Setter Property="Foreground" Value="#fff"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#4AAA4A"/>
</Trigger>
</Style.Triggers>
</Style>
IconButton:
<Button Margin="0 0 0 0" VerticalAlignment="Center" ToolTipService.Placement="Bottom">
<StackPanel Orientation="Horizontal">
<Rectangle Width="12" Height="12" Fill="{Binding Path=Foreground, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Button}}}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Fill" Visual="{Binding Path=Icon,RelativeSource={RelativeSource AncestorType={x:Type local:IconButton}}}" />
</Rectangle.OpacityMask>
</Rectangle>
<TextBlock Text="{Binding Path=Message,RelativeSource={RelativeSource AncestorType={x:Type local:IconButton}}}" FontSize="10" Margin="2 0 0 0"/>
</StackPanel>
</Button>
code derrière:
public partial class IconButton
{
public static readonly DependencyProperty MessageProperty
= DependencyProperty.Register("Message", typeof(string), typeof(IconButton));
public static readonly DependencyProperty IconProperty
= DependencyProperty.Register("Icon", typeof(Canvas), typeof(IconButton));
public string Message
{
get { return (string)GetValue(MessageProperty); }
set { SetValue(MessageProperty, value);}
}
public Canvas Icon
{
get { return (Canvas) GetValue(IconProperty); }
set { SetValue(IconProperty, value);}
}
public IconButton()
{
InitializeComponent();
}
}
Utilisation:
style a erreur:
'Button TargetType does not match type of element IconButton'
Comment je résolu ce problème? IconButton doit avoir un style pour IconButton mais j'ai un style pour seulement Button.
Merci pour les conseils.
Je suppose que votre 'TargetType' devrait être quelque chose comme' TargetType = "{x: Tapez le bouton}'? –
@AshishSrivastava 'TargetType =" Button "' fonctionne aussi bien. – Clemens