1
Voici mon application simple:Utilisation AttachedProperty dans le style dans ControlTemplate
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:app="clr-namespace:WpfApplication1"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<Style x:Key="Test">
<Setter Property="Button.Template">
<Setter.Value>
<ControlTemplate>
<Border BorderBrush="Blue"
BorderThickness="3"
Background="Black"
CornerRadius="{Binding app:Extras.CornerRadius}"
>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid>
<Button Height="23"
HorizontalAlignment="Left"
Margin="29,26,0,0"
Name="button1"
VerticalAlignment="Top" Width="75"
app:Extras.CornerRadius="10"
Style="{StaticResource Test}"
>Button</Button>
</Grid>
</Window>
Voici mon AttachedProperty:
namespace WpfApplication1
{
public class Extras
{
public static readonly DependencyProperty CornerRadiusProperty = DependencyProperty.RegisterAttached(
"CornerRadius",
typeof(double),
typeof(Button),
new FrameworkPropertyMetadata(1.0d, FrameworkPropertyMetadataOptions.AffectsRender)
);
public static void SetCornerRadius(UIElement element, double value)
{
element.SetValue(CornerRadiusProperty, value);
}
public static double GetCornerRadius(UIElement element)
{
return (double)element.GetValue(CornerRadiusProperty);
}
}
}
CornerRadius="{Binding app:Extras.CornerRadius}"
Bien sûr, cela ne fonctionne pas. alors comment puis-je obtenir de la valeur d'ici app:Extras.CornerRadius="10"
merci d'avance!
dans le concepteur, il donne l'erreur: « Vous ne trouvez pas le membre statique 'CornerRadiusProperty' sur le type "Bouton". " , lors de l'exécution "Impossible de convertir la valeur de l'attribut 'CornerRadius' en objet de type 'System.Windows.TemplateBindingExtension' Erreur sur l'objet 'System.Windows.Controls.ControlTemplate' dans le fichier de balisage" – Andrey
voir la mise à jour de la réponse –
System. Erreur Windows.Data Erreur 39: BindingExpression path: '(app: Extras.CornerRadius)' propriété introuvable sur 'objet' '' Button '(Nom =' button1 ')'. BindingExpression: Path = (app: Extras.CornerRadius); DataItem = 'Button' (Name = 'button1'); l'élément cible est 'Border' (Name = ''); La propriété target est 'CornerRadius' (tapez 'CornerRadius') – Andrey