c#-WPF现代版用户界面在单击“链接”后弹出一个现代对话框

我正在使用WPF现代UI,并且尝试单击链接后弹出ModernDialog.
问题是,链接只有Source选项,并且我不想导航到另一个页面(只想弹出ModernDialog).
我发现了:How to open a new window click on a menu link in Modern UI wpf?
但它只会在第一次单击时弹出窗口,并且还会导航到第一个标签页(我的意思是我所查看页面的“父级”).

有人有主意吗?可能吗?

这是我的代码(相关部分),我在谈论“连接”链接:

 <mui:ModernWindow.TitleLinks>
        <mui:Link x:Name="connect" DisplayName="connect"/>
        <mui:Link DisplayName="settings" Source="/Pages/SettingsPage.xaml" />
        <mui:Link DisplayName="help" Source="https://github.com" />
    </mui:ModernWindow.TitleLinks>
最佳答案
您可以覆盖ModernWindow的OnApplyTemplate()方法,并添加一个绑定到ModernFrame的NavigateLink命令.如果您未设置链接的Source属性,则command参数将为null:

public partial class MainWindow : ModernWindow
{
    public MainWindow()
    {
        InitializeComponent();
    }

    public override void OnApplyTemplate()
    {
        base.OnApplyTemplate();

        var frame = Template.FindName("ContentFrame", this) as ModernFrame;
        if(frame != null)
            frame.CommandBindings.Add(new CommandBinding(FirstFloor.ModernUI.Windows.Navigation.LinkCommands.NavigateLink, OnNavigateLinkExecuted));
    }

    private void OnNavigateLinkExecuted(object sender, ExecutedRoutedEventArgs e)
    {
        if(e.Parameter == null)
        {
            ModernDialog dialog = new ModernDialog();
            dialog.ShowDialog();
        }
        else
        {
            OnNavigateLink(sender, e);
        }
    }

    private void OnNavigateLink(object sender, ExecutedRoutedEventArgs e)
    {
        if (LinkNavigator != null)
        {
            Uri uri;
            string parameter;
            string targetName;

            if (FirstFloor.ModernUI.Windows.Navigation.NavigationHelper.TryParseUriWithParameters(e.Parameter, out uri, out parameter, out targetName))
                LinkNavigator.Navigate(uri, e.Source as FrameworkElement, parameter);
        }
    }
}

XAML:

<mui:ModernWindow.TitleLinks>
    <mui:Link x:Name="connect" DisplayName="connect"/>
    <mui:Link DisplayName="settings" Source="/Pages/SettingsPage.xaml" />
    <mui:Link DisplayName="help" Source="https://github.com" />
</mui:ModernWindow.TitleLinks>

转载注明原文:c#-WPF现代版用户界面在单击“链接”后弹出一个现代对话框 - 代码日志