[英]WPF: Modifying a ControlTemplate property from a DataTemplate?
[英]Set a property value took from existing property WPF ControlTemplate
我正在使用WPF ControlTemplates。 我想說的是,每當在我的Button上觸發mouserover事件時,它們的背景顏色就會變為borderBrush顏色。
<Style TargetType="Button">
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Background" Value="White"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<Border x:Name="Border" CornerRadius="6" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}">
<TextBlock x:Name="ContentBlock" Foreground="{TemplateBinding Foreground}" Text="{TemplateBinding Content}" VerticalAlignment="Center" HorizontalAlignment="Center"></TextBlock>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="false">
<Setter TargetName="Border" Property="BorderBrush" Value="Gray"></Setter>
<Setter TargetName="ContentBlock" Property="Foreground" Value="Gray"></Setter>
</Trigger>
<Trigger Property="IsMouseOver" Value="true">
<!--<Setter TargetName="Border" Property="Background" Value="Border.BorderBrush"></Setter>-->
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
在下面的行中,我嘗試從Button中獲取borderBrush。 但我不能這樣:
<!--<Setter TargetName="Border" Property="Background" Value="Border.BorderBrush"></Setter>-->
您可以使用將RelativeSource
設置為Border
本身來創建Binding
,這允許您綁定到Border
自己的BorderBrush
屬性:
<Setter TargetName="Border" Property="Background" Value="{Binding RelativeSource={RelativeSource Self}, Path=BorderBrush}" />
我認為在觸發器中設置參考值並非易事。 如果您使用背景設置顏色的方式設置值是否會出現問題?
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="false">
<Setter TargetName="Border"
Property="BorderBrush" Value="Gray"></Setter>
<Setter TargetName="ContentBlock"
Property="Foreground" Value="Gray"></Setter>
</Trigger>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="Border"
Property="Background" Value="Gray" />
</Trigger>
</ControlTemplate.Triggers>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.