0

wpf(windows 8メトロアプリ)でテンプレート化されたハイパーリンクボタンを作成しました:

<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イベントを使用すると、マウスの右クリックでこのイベントがトリガーされますが、マウスの左クリックではトリガーされません。

4

1 に答える 1

0

私は解決策を見つけました。変更されたマークアップは次のとおりです。

<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クラスを使用する必要があります。理由はわかりませんが、これは私にとって有効な解決策のようです。

于 2012-07-20T03:28:13.017 に答える