我使用样式" FooterPanel"出现在边框内的超链接样式。如下:
<Style x:Key="FooterPanel" TargetType="{x:Type Border}">
<Style.Resources>
<Style TargetType="{x:Type Hyperlink}">
<Setter Property="Foreground" Value="{StaticResource FooterPanelLinkBrush}"/>
</Style>
</Style.Resources>
</Style>
我现在还创建了一个样式来创建一个按钮作为超链接(所以我可以在超链接上获得IsDefault和IsCancel等属性):
<Style x:Key="LinkButton" TargetType="{x:Type Button}">
<Setter Property="Focusable" Value="False"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">
<Hyperlink Command="{TemplateBinding Command}" CommandParameter="{TemplateBinding CommandParameter}">
<Run Text="{TemplateBinding Content}"/>
</Hyperlink>
</TextBlock>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
FooterPanel中的正常超链接接收FooterPanelLinkBrush前景,但如果我在FooterPanel中使用LinkButton,则不应用该样式。有没有办法让ControlTemplate继承FooterPanel中的样式而不是任何全局超链接样式?
修改
根据此回答https://stackoverflow.com/a/9166963/2383681,有一些特殊处理意味着Hyperlink
无法接收FooterPanel
中定义的样式,因为它不是从Control
派生的{1}}。
我不确定我想要做什么,因此没有一些代码隐藏,所以我想我只是要解决这个问题并为{{1创建一种新风格并为页脚面板中的按钮显式引用它。如果没有这样做,那么知道这是否可能会很有趣。
答案 0 :(得分:1)
您可以为Style
创建单独的HyperLink
:
<Style x:Key="FooterPanelLink" TargetType="{x:Type Hyperlink}">
<Setter Property="Foreground" Value="{StaticResource FooterPanelLinkBrush}"/>
</Style>
然后按以下方式在Style
和Resources
样式的FooterPanel
中使用此LinkButton
:
<Style x:Key="FooterPanel" TargetType="{x:Type Border}">
<Style.Resources>
<Style TargetType="Hyperlink" BasedOn="{StaticResource FooterPanelLink}" />
</Style.Resources>
</Style>
<Style x:Key="LinkButton" TargetType="{x:Type Button}">
<Style.Resources>
<Style TargetType="Hyperlink" BasedOn="{StaticResource FooterPanelLink}" />
</Style.Resources>
<Setter Property="Focusable" Value="False"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">
<Hyperlink Command="{TemplateBinding Command}" CommandParameter="{TemplateBinding CommandParameter}">
<Run Text="{TemplateBinding Content}"/>
</Hyperlink>
</TextBlock>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
这样HyperLink
内的LinkButton
将使用您在FooterPanelLink
样式中指定的颜色。