Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 将事件处理程序绑定到模板化超链接_Wpf_Microsoft Metro - Fatal编程技术网

Wpf 将事件处理程序绑定到模板化超链接

Wpf 将事件处理程序绑定到模板化超链接,wpf,microsoft-metro,Wpf,Microsoft Metro,我在wpf(windows 8 metro应用程序)中创建了一个模板化的hyperlinkbutton: 这是超链接按钮:: <HyerlinkButton Style={StaticResource MainPageLinkStyle} x:Name="MoreDetailsHyperlinkButton" Content="More..." Click="MoreDetailsHyperlinkButton_Click"/> 样式MainPageLinkStyle是指

我在wpf(windows 8 metro应用程序)中创建了一个模板化的hyperlinkbutton:


这是超链接按钮::

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

样式MainPageLinkStyle是指上述样式

问题:无法执行单击Hyperlink按钮

请帮忙

提前谢谢

编辑:
当我使用PointerPressed事件时,鼠标右键单击触发此事件,而不是鼠标左键单击,而不是hyperlinkbutton的单击事件。我觉得很奇怪。

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

<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。我不明白为什么,但这似乎是一个可行的解决方案。这是指WPF还是Metro XAML?它们不是同一个框架。约翰,这在WPF中可能吗?也许我可以把它和Metro XAML联系起来。
<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**>