Dans WPF, j'ai créé un ControlTemplate pour un bouton et j'ai essayé de modifier le pinceau d'arrière-plan à l'aide d'un déclencheur. Pour stocker la valeur de la brosse, j'utilise une propriété jointe.WPF: Pourquoi ne puis-je pas lire une propriété jointe à l'intérieur d'un déclencheur de modèle de contrôle?
J'ai testé la propriété jointe elle-même et cela fonctionne bien - elle peut être définie, et elle peut être liée à (comme lorsque je lie simplement l'arrière-plan à cette propriété). Mais quand j'essaye d'obtenir cette propriété à l'intérieur du déclencheur (change l'arrière-plan à la valeur de cette propriété), la valeur n'est même pas lue (comme je vois quand je breakpoint dans le getter de propriété attaché), et le les changements de fond à transparent.
Comment puis-je résoudre ce problème?
<ControlTemplate x:Key="DefaultButtonTemplate" TargetType="{x:Type Button}">
<Border
x:Name="border"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
SnapsToDevicePixels="True"
>
<ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" TargetName="border" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=ButtonAttachedProperties.BackgroundOnMouseOver}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
Génial. Je vous remercie! – user884248