0

XAMLで、ユーザーをウィンドウの特定のセクションに移動するようにハイパーリンクを設定するにはどうすればよいですか。HTMLでアンカータグを使用する方法と同じです。基本的に、ユーザーがエラーのリストでエラーをクリックできるようにする必要があります。リンクにより、エラーがその領域に移動します。

4

1 に答える 1

1

XAMLハイパーリンクNavigateUriは、少し後ろのコードで動作する可能性があります。

<Window x:Class="fwAnchorInWindow.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <StackPanel>
        <TextBox x:Name="TextBoxName" Text="Enter Name"/>
        <TextBox x:Name="TextBoxNumber" Text="Enter Number"/>
        <TextBlock>
          <Hyperlink NavigateUri="TextBoxName" RequestNavigate="Hyperlink_RequestNavigate">
              There is a name error.
          </Hyperlink>
        </TextBlock>
    </StackPanel>
</Window>

using System.Windows;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Navigation;
namespace fwAnchorInWindow
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e)
        {
            if (sender is Hyperlink)
            {
                string controlName = ((Hyperlink)sender).NavigateUri.ToString();
                IInputElement control = (IInputElement)this.FindName(controlName);
                Keyboard.Focus(control);
            }
        }
    }
}

FindNameは、子コントロールを見つける唯一の方法です。この投稿には他にも方法があります。コントロールを見つけるWPFの方法

また、WPFはLogicalFocusとKeybaordFocusを区別していることに注意することも重要です。MarkSmithのIt'sBasciallyFocusです。上記のコードでは、キーボードフォーカスがあると、自動的に論理フォーカスが示されます。

于 2012-08-21T15:49:30.083 に答える