可替代超链接导航

本文关键字:导航 超链接 | 更新日期: 2023-09-27 18:11:15

我正在使用WPF (.net 4.5目标),虽然我很习惯WPF,但这是我第一次使用页面/导航模型。

我看到导航到一个页面,我可以做一些非常简单的事情(使用超链接),但这是非常远,我想要的风格方面(我宁愿从一个按钮开始)。是否有超链接的替代方案,或者我最好的选择是使用按钮+代码来导航?

我的目标是在统一网格中提供样式按钮和图标作为超链接,该网格将整个页面作为主页

可替代超链接导航

在Silverlight/WP中,有HyperlinkButton,这正是您所要求的,但显然在WPF中不存在。所以,似乎你最好的选择是使用常规按钮,以及NavigationService.Navigate在它的命令。像这样:

<Button Content="Navigate" Command="{Binding NavigateCommand}" 
    CommandParameter="/Views/SomePage.xaml" />

那么NavigateCommand将是一个标准的DelegateCommand,使用参数作为URI:

public class MyViewModel : ViewModelBase
{
    public ICommand NavigateCommand { get; private set; }
    public MyViewModel()
    {
        NavigateCommand = new DelegateCommand<string>(url => {
            var uri = new Uri(url, UriKind.Relative);
            NavigationService.Navigate(uri);
        });
    }
}

你可能想写你自己版本的HyperlinkButton,就像这样:

public class HyperlinkButton : Button
{
    public string NavigateUri { get; set; }
    protected override void OnClick(EventArgs e)
    { 
        if (NavigateUri != null)
        {
            var uri = new Uri(NavigateUri, UriKind.Relative);
            NavigationService.Navigate(uri);
        }
    }
}