[英]Setter TargetName 'ContentPresenter' not recognized in Trigger
我有一个ContentPresenter,当Button被禁用时,内容的不透明度应该变为0.5,但是Setter无法通过TargetName找到它。 有什么我想念的吗?
<Style TargetType="Button">
<Style.Triggers>
<Trigger Property="Tag" Value="MenuButton">
<Setter Property="Background" Value="{StaticResource BackgroundBrush}"/>
<Setter TargetName="ContentPresenter" Property="Opacity" Value="1.0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border BorderThickness="1,0,0,1" Background="{TemplateBinding Background}">
<ContentPresenter
x:Name="ContentPresenter"
Margin="1"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Opacity="1.0"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" Value="{StaticResource DisabledBackgroundBrush}"/>
<Setter TargetName="ContentPresenter" Property="Opacity" Value="0.5"/>
</Trigger>
</Style.Triggers>
</Style>
对于此类问题,您需要了解NameScope
的概念。 Template
定义自己的NameScope
。 因此,您的TargetName
将无法在模板外部工作。
因此,尝试从ControlTemplate
内部访问它。
您可以使用ControlTemplate.Triggers
通过Setters更改ContentPresenter
属性。 “ContentPresenter”名称仅在模板中已知。
<Style TargetType="Button">
<Style.Triggers>
<Trigger Property="Tag" Value="MenuButton">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border BorderThickness="1,0,0,1" Background="{TemplateBinding Background}">
<ContentPresenter
x:Name="ContentPresenter"
Margin="1"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Opacity="1.0"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" Value="{StaticResource DisabledBackgroundBrush}"/>
<Setter TargetName="ContentPresenter" Property="Opacity" Value="0.5"/>
</Trigger>
<Trigger Property="IsEnabled" Value="True">
<Setter Property="Background" Value="{StaticResource BackgroundBrush}"/>
<Setter TargetName="ContentPresenter" Property="Opacity" Value="1"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.