0
在WPF中,我爲按鈕創建了一個ControlTemplate,並嘗試通過觸發器更改Background Brush。要存儲筆刷的值,我使用附加屬性。WPF:爲什麼我無法從控件模板觸發器中讀取附加屬性?
我測試了附加屬性本身,它工作得很好 - 它可以被設置,並且它可以被綁定(比如當我簡單地將背景綁定到該屬性時)。當我嘗試在觸發器內獲取該屬性(將Background更改爲該屬性的值)時,該值甚至不會被讀取(正如我在附加屬性getter中的斷點時看到的那樣),而且背景變爲透明。
我該如何解決這個問題?
<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>
太棒了。謝謝! – user884248