WPF Ajouter une propriété personnalisée dans un contrôle
Ok j'ai une application WPF dans lequel j'ai un dictionnaire de ressources. Dans le dictionnaire, j'ai un nouveau style pour un Button
qui ressemble à ceci :
<Style x:Key="MenuButtonStyle" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Image x:Name="Imager" RenderOptions.BitmapScalingMode="HighQuality" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" Source="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Tag}" VerticalAlignment="Center" HorizontalAlignment="Center" Stretch="UniformToFill"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="Imager" Property="Width" Value="24" />
<Setter TargetName="Imager" Property="Height" Value="24" />
</Trigger>
<Trigger Property="IsPressed" Value="true">
<Setter TargetName="Imager" Property="Width" Value="16" />
<Setter TargetName="Imager" Property="Height" Value="16" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Et utiliser cette étable dans mon XAML comme ceci :
<Button x:Name="Home" Style="{DynamicResource MenuButtonStyle}" Width="20" Height="20" Tag="\Images\Home.png"/>
<Button x:Name="Settings" Style="{DynamicResource MenuButtonStyle}" Width="20" Height="20" Tag="\Images\Settings.png"/>
Maintenant ce que je veux faire est de Créer une nouvelle propriété dans la Button
style nommé OverWidth
et OverHeight
afin de l'utiliser comme ceci :
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="Imager" Property="Width" Value= OVERWIDTH/>
<Setter TargetName="Imager" Property="Height" Value= OVERHEIGHT/>
</Trigger>
Et en XAML :
<Button x:Name="Home" Style="{DynamicResource MenuButtonStyle}" Width="20" Height="20" Tag="\Images\Home.png" OVERWIDTH = "24"/>
Je ne sais même pas si c'est possible. Je ne veux pas utiliser Binding SomeIntenger
partir de code C#.
Merci à l'avance.
OriginalL'auteur oimitro | 2013-08-07
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le propriétés attachées:
Xaml:
OriginalL'auteur Vyacheslav Volkov
J'ai utilisé le propriété Tag, qui fonctionne très bien. Je peux écrire n'importe quoi sur Tag
Par exemple (AXML) sur un Bouton:
Je peux utiliser un champ de type chaîne à ajouter listes ou valeurs int, date, etc pour ensuite interpréter et convertir la chaîne en quoi que ce soit.
**J'ai utilisé cette solution, en raison de la nécessité d'ajouter un champ ID à un bouton.
OriginalL'auteur Sergio Perez