C# 超链接导航的替代方案?

C# 超链接导航的替代方案?,c#,.net,wpf,hyperlink,wpf-4.0,C#,.net,Wpf,Hyperlink,Wpf 4.0,我正在使用WPF(.NET4.5Target),虽然我已经非常习惯WPF,但这是我第一次使用页面/导航模型 我发现,要导航到一个页面,我可以做一些非常简单的事情(使用超链接),但这与我想要的风格相差甚远(我宁愿从一个按钮开始)。是否有超链接的替代方案,或者我最好使用按钮+代码来导航 我的目标是在uniformgrid中提供带有图标的样式化按钮作为超链接,该超链接将整个页面作为主页。在Silverlight/WP中,有,这正是您所要求的,但显然在WPF中不存在。因此,您的最佳选择似乎是使用常规按钮

我正在使用WPF(.NET4.5Target),虽然我已经非常习惯WPF,但这是我第一次使用页面/导航模型

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


我的目标是在uniformgrid中提供带有图标的样式化按钮作为超链接,该超链接将整个页面作为主页。

在Silverlight/WP中,有,这正是您所要求的,但显然在WPF中不存在。因此,您的最佳选择似乎是使用常规按钮及其命令。比如说:

<Button Content="Navigate" Command="{Binding NavigateCommand}" 
    CommandParameter="/Views/SomePage.xaml" />
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);
        }
    }
}

相反,您可能希望编写自己版本的HyperlinkButton,如下所示:

<Button Content="Navigate" Command="{Binding NavigateCommand}" 
    CommandParameter="/Views/SomePage.xaml" />
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);
        }
    }
}

在Silverlight/WP中,有,这正是您所要求的,但显然WPF中不存在。因此,您的最佳选择似乎是使用常规按钮及其命令。比如说:

<Button Content="Navigate" Command="{Binding NavigateCommand}" 
    CommandParameter="/Views/SomePage.xaml" />
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);
        }
    }
}

相反,您可能希望编写自己版本的HyperlinkButton,如下所示:

<Button Content="Navigate" Command="{Binding NavigateCommand}" 
    CommandParameter="/Views/SomePage.xaml" />
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);
        }
    }
}

在Silverlight/WP中,有,这正是您所要求的,但显然WPF中不存在。因此,您的最佳选择似乎是使用常规按钮及其命令。比如说:

<Button Content="Navigate" Command="{Binding NavigateCommand}" 
    CommandParameter="/Views/SomePage.xaml" />
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);
        }
    }
}

相反,您可能希望编写自己版本的HyperlinkButton,如下所示:

<Button Content="Navigate" Command="{Binding NavigateCommand}" 
    CommandParameter="/Views/SomePage.xaml" />
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);
        }
    }
}

在Silverlight/WP中,有,这正是您所要求的,但显然WPF中不存在。因此,您的最佳选择似乎是使用常规按钮及其命令。比如说:

<Button Content="Navigate" Command="{Binding NavigateCommand}" 
    CommandParameter="/Views/SomePage.xaml" />
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);
        }
    }
}

相反,您可能希望编写自己版本的HyperlinkButton,如下所示:

<Button Content="Navigate" Command="{Binding NavigateCommand}" 
    CommandParameter="/Views/SomePage.xaml" />
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);
        }
    }
}


您可以根据需要设置按钮的样式。在WPF中,几乎任何东西都是一个内容控件。这根本不是问题,超链接不是一个按钮,必须嵌入到文本块中,我想要“像”一个具有超链接功能的按钮,到目前为止,我是通过按钮和代码实现的,但我的问题是,有没有其他控件可以与超链接相同,但不是内联文本内容,而是纯文本内容。然后,您需要解决您的问题。“提供带有图标的样式化按钮”您需要阅读整个问题以获得上下文,这是我的视觉目标,因此,一方面,按钮是我的视觉目标,另一方面,超链接是我的功能目标,我正在寻找既能带来这两种功能(具有超链接功能的按钮外观)的东西。您可以根据需要设置按钮样式。在WPF中,几乎任何东西都是一个内容控件。这根本不是问题,超链接不是一个按钮,必须嵌入到文本块中,我想要“像”一个具有超链接功能的按钮,到目前为止,我是通过按钮和代码实现的,但我的问题是,有没有其他控件可以与超链接相同,但不是内联文本内容,而是纯文本内容。然后,您需要解决您的问题。“提供带有图标的样式化按钮”您需要阅读整个问题以获得上下文,这是我的视觉目标,因此,一方面,按钮是我的视觉目标,另一方面,超链接是我的功能目标,我正在寻找既能带来这两种功能(具有超链接功能的按钮外观)的东西。您可以根据需要设置按钮样式。在WPF中,几乎任何东西都是一个内容控件。这根本不是问题,超链接不是一个按钮,必须嵌入到文本块中,我想要“像”一个具有超链接功能的按钮,到目前为止,我是通过按钮和代码实现的,但我的问题是,有没有其他控件可以与超链接相同,但不是内联文本内容,而是纯文本内容。然后,您需要解决您的问题。“提供带有图标的样式化按钮”您需要阅读整个问题以获得上下文,这是我的视觉目标,因此,一方面,按钮是我的视觉目标,另一方面,超链接是我的功能目标,我正在寻找既能带来这两种功能(具有超链接功能的按钮外观)的东西。您可以根据需要设置按钮样式。在WPF中,几乎任何东西都是一个内容控件。这根本不是问题,超链接不是一个按钮,必须嵌入到文本块中,我想要“像”一个具有超链接功能的按钮,到目前为止,我是通过按钮和代码实现的,但我的问题是,有没有其他控件可以与超链接相同,但不是内联文本内容,而是纯文本内容。然后,您需要解决您的问题。“提供带有图标的样式化按钮”你需要阅读整个问题以获得上下文,这是我的视觉目标,因此,一方面按钮是我的视觉目标,另一方面超链接是我的功能目标,我正在寻找同时带来这两个目标的东西(具有超链接功能的按钮外观)我已经有了这样的解决方案,但我真的希望有内置的东西,是的,HyperlinkButton似乎非常适合,他们在早期分叉SL&WPF时出了很大的问题,在我看来,没有一个是另一个的超集,这真是一团糟:(我已经有了这样的解决方案,但我真的希望有内置的东西,是的,HyperlinkButton似乎非常适合,他们在早期分叉SL&WPF时出了很大的问题,在我看来,没有一个是另一个的超集,这真是一团糟:(我已经有了这样一个解决方案,但我真的希望有一个内置的东西,是的HyperlinkButton似乎非常适合,他们在早期分叉SL&WPF时出错了,在我看来,没有一个是另一个的超集,这真是一团糟