1

ハイパーリンクを次から変更しました。

   <HyperlinkButton x:Name="hyperlinkButtonManageInvitations" Margin="24"
                    Grid.Row="1" Tap="HyperlinkButtonManageInvitations_OnTap">
       Manage Invitations
   </HyperlinkButton>

...これに:

    <HyperlinkButton x:Name="hyperlinkButtonManageInvitations"
                     BorderBrush="DarkOrange" Margin="24" Grid.Row="1"
                     Tap="HyperlinkButtonManageInvitations_OnTap">
        Manage Invitations
    </HyperlinkButton>

...そして視覚的な変化はありませんでした - 境界線は追加されませんでした. そこで、次のようにさらにいくつかのプロパティを微調整してみました。

    <HyperlinkButton x:Name="hyperlinkButtonManageInvitations"
                     BorderBrush="DarkOrange" Margin="24" Grid.Row="1"
                     Tap="HyperlinkButtonManageInvitations_OnTap"
                     BorderThickness="4" OpacityMask="Black">
        Manage Invitations
    </HyperlinkButton>

...そしてまだ行きません。境界線を追加する中で理解していないのはどの部分ですか?

アップデート

私のハイパーリンクボタンは次のとおりです。

    <HyperlinkButton x:Name="hyperlinkButtonManageInvitations" Style="{StaticResource BorderedHyperlinkButtonStyle}" BorderThickness="5" BorderBrush="Red" Foreground="DarkOrange" Margin="24" Grid.Row="1" Tap="HyperlinkButtonManageInvitations_OnTap" Content="Manage Invitations">
    </HyperlinkButton>

...そして、以下に示すスタイルを App.xaml のセクションに追加しましたが、問題のハイパーリンク ボタンの周りにまだ境界線が表示されています。

更新 2

それは今そこにあります-それは「突然」現れました。xamlレンダラーの取り込みが時々遅くなる可能性があると思います。または、新しく追加されたスタイルを使用する場合、最初にプロジェクトをリロードする必要がありますか...???

4

1 に答える 1

5

これは、HyperlinkBut​​ton コントロール テンプレートに関係しています。Blend に移動して、編集するコントロール テンプレートのコピーを作成すると、次のような結果が得られます。

<ControlTemplate TargetType="HyperlinkButton">
  <Border Background="Transparent">
    <VisualStateManager.VisualStateGroups>
      <VisualStateGroup x:Name="CommonStates">
        <VisualState x:Name="Normal"/>
        <VisualState x:Name="MouseOver"/>
        <VisualState x:Name="Pressed">
          <Storyboard>
            <DoubleAnimation Duration="0" To="0.5" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="TextElement"/>
          </Storyboard>
        </VisualState>
        <VisualState x:Name="Disabled">
          <Storyboard>
            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="TextElement">
              <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneDisabledBrush}"/>
            </ObjectAnimationUsingKeyFrames>
          </Storyboard>
        </VisualState>
      </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>
    <Border Background="{TemplateBinding Background}" Margin="{StaticResource PhoneHorizontalMargin}" Padding="{TemplateBinding Padding}">
      <TextBlock x:Name="TextElement" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Text="{TemplateBinding Content}" TextDecorations="Underline" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
    </Border>
  </Border>
</ControlTemplate>

したがって、コントロールの BorderBrush および BorderThickness プロパティへの TemplateBinding がないことをここで確認できます。

問題を解決するには、このスタイルをコピーしてページ/アプリ リソースに挿入します。

<Style x:Key="BorderedHyperlinkButtonStyle" TargetType="HyperlinkButton">
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="HyperlinkButton">
        <Border Background="Transparent" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
          <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="CommonStates">
              <VisualState x:Name="Normal"/>
              <VisualState x:Name="MouseOver"/>
              <VisualState x:Name="Pressed">
                <Storyboard>
                  <DoubleAnimation Duration="0" To="0.5" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="TextElement"/>
                </Storyboard>
              </VisualState>
              <VisualState x:Name="Disabled">
                <Storyboard>
                  <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="TextElement">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneDisabledBrush}"/>
                  </ObjectAnimationUsingKeyFrames>
                </Storyboard>
              </VisualState>
            </VisualStateGroup>
          </VisualStateManager.VisualStateGroups>
          <Border Background="{TemplateBinding Background}" Margin="{StaticResource PhoneHorizontalMargin}" Padding="{TemplateBinding Padding}">
            <TextBlock x:Name="TextElement" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Text="{TemplateBinding Content}" TextDecorations="Underline" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
          </Border>
        </Border>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

次に、Border を使用する HyperlinkBut​​ton で、次のように設定します。

<HyperlinkButton Style="{StaticResource BorderedHyperlinkButtonStyle}" BorderThickness="5" BorderBrush="Red" />

BorderThickness と BorderBrush を好きなように編集してください。

于 2012-12-31T16:58:05.107 に答える