【问题标题】:Binding event handlers to the templated hyperlink将事件处理程序绑定到模板化超链接
【发布时间】:2012-07-17 17:13:58
【问题描述】:

我在 wpf(Windows 8 Metro 应用程序)中创建了一个模板化的超链接按钮:

<ControlTemplate TargetType="HyperlinkButton">
<HyperlinkButton>
    <VisualStateManager.VisualStateGroups>
        <VisualStateGroup x:Name="CommonStates">
            <VisualStateGroup.Transitions>
                <VisualTransition To="PointerOver" GeneratedDuration="0:0:0.1"/>
            </VisualStateGroup.Transitions>                
        </VisualStateGroup>
        <VisualState x:Name="Normal"/>
        <VisualState x:Name="PointerOver">
            <Storyboard>
                <ColorAnimation Storyboard.TargetName="HyperlinkForegroundBrush" Storyboard.TargetProperty="Color" To="#FF011751"/>
            </Storyboard>
        </VisualState>
    </VisualStateManager.VisualStateGroups>
    <ContentPresenter Content={TemplateBinding Content}>
        <ContentPresenter.Foreground>
            <SolidColorBrush x:Name="HyperlinkForegroundBrush" Color="3FFB20404"/>
        </ContentPresenter.Foreground>
    </ContentPresenter>
</HyperlinkButton>

这是超链接按钮::

<HyerlinkButton Style={StaticResource MainPageLinkStyle} x:Name="MoreDetailsHyperlinkButton" Content="More..." Click="MoreDetailsHyperlinkButton_Click"/>

MainPageLinkStyle 样式参考上述样式。

问题:超链接按钮的点击没有被执行。

请帮忙。

提前致谢。

编辑: 而不是超链接按钮的点击事件,当我使用 PointerPressed 事件时,鼠标右键单击会触发此事件,而不是鼠标左键单击....对我来说似乎很奇怪。

【问题讨论】:

  • 这是指 WPF 还是 Metro XAML?它们不是同一个框架。
  • 约翰,这在 WPF 中可行吗?也许我可以将它与 Metro XAML 联系起来。

标签: wpf microsoft-metro


【解决方案1】:

我找到了解决方案。这是修改后的标记:

<ControlTemplate TargetType="HyperlinkButton">
<**Border**>
    <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="CommonStates">
                    <VisualStateGroup.Transitions>
                        <VisualTransition To="PointerOver" GeneratedDuration="0:0:0.1"/>
                </VisualStateGroup.Transitions>                
            </VisualStateGroup>
            <VisualState x:Name="Normal"/>
            <VisualState x:Name="PointerOver">
                <Storyboard>
                        <ColorAnimation Storyboard.TargetName="HyperlinkForegroundBrush" Storyboard.TargetProperty="Color" To="#FF011751"/>
                    </Storyboard>
            </VisualState>
        </VisualStateManager.VisualStateGroups>
        <ContentPresenter Content={TemplateBinding Content}>
            <ContentPresenter.Foreground>
                    <SolidColorBrush x:Name="HyperlinkForegroundBrush" Color="3FFB20404"/>
            </ContentPresenter.Foreground>
        </ContentPresenter>
</**Border**>

正如标记中突出显示的那样,我需要使用 Border 类而不是 Hyperlink。我不明白为什么,但这似乎是一个对我有用的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 2018-01-19
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多