Как перемещаться по ссылкам с помощью кнопки в современном пользовательском интерфейсе WPF на С#?

Я использую ModernUI. У меня есть одна проблема с кнопкой и ссылкой.

Я пытаюсь перемещаться по событию Button Click, и мой код в «Home.xaml» выглядит следующим образом.

private void addGameButton_Click(object sender, RoutedEventArgs e)
{
    BBCodeBlock bs = new BBCodeBlock();
    try
    {
        bs.LinkNavigator.Navigate(new Uri("pack://application:/Pages/AddGame.xaml"), null);
    }
    catch (Exception error)
    {
        ModernDialog.ShowMessage(error.Message, FirstFloor.ModernUI.Resources.NavigationFailed, MessageBoxButton.OK);
    }
}

mui:Link отлично работает в MainWindows.xaml для навигации. но я хочу перейти к AddGame.xaml со страницы Home.xaml с помощью кнопки, которая находится на странице Home.xaml.

Моя файловая структура приведена ниже для справки.

Структура папок

Так что, пожалуйста, дайте мне знать, где я делаю неправильно?


person VarunJi    schedule 01.04.2014    source источник
comment
Посмотрите документацию, чтобы убедиться, что Uri правильный.   -  person Lukas Kubis    schedule 01.04.2014
comment
Я пробовал много способов, но не смог найти решение. даже я пробовал ссылку на stackoverflow - [stackoverflow.com/questions/20031163/   -  person VarunJi    schedule 01.04.2014


Ответы (2)


Второй параметр метода bs.LinkNavigator.Navigate — source, который не может быть нулевым. Попробуй это:

private void addGameButton_Click(object sender, RoutedEventArgs e)
{
    BBCodeBlock bs = new BBCodeBlock();
    try
    {
        bs.LinkNavigator.Navigate(new Uri("/Pages/AddGame.xaml", UriKind.Relative), this);
    }
    catch (Exception error)
    {
        ModernDialog.ShowMessage(error.Message, FirstFloor.ModernUI.Resources.NavigationFailed, MessageBoxButton.OK);
    }
}
person Lukas Kubis    schedule 02.04.2014
comment
Спасибо Лукас. Вы спасли мою жизнь. И как я могу активировать ссылку, а именно mui: Link. - person VarunJi; 02.04.2014
comment
Извините, но я не знаю, что вы имеете в виду: ..как я могу активировать ссылку.. - person Lukas Kubis; 02.04.2014
comment
Я использую современный пользовательский интерфейс, как я уже упоминал в своем вопросе. а современный пользовательский интерфейс использует ссылку для навигации. Вот я и спрашиваю об этих ссылках. как показано ниже ‹mui:LinkGroup DisplayName=Инструмент для добавления или обновления игр › ‹mui:LinkGroup.Links› ‹mui:Link DisplayName=Home Source=Pages/Home.xaml /› ‹mui:Link DisplayName=Добавить источник игры=Pages/ AddGame.xaml /› ‹mui:Link DisplayName=Обновить игру /› ‹mui:Link DisplayName=Файлы автоматизации /› ‹/mui:LinkGroup.Links› ‹/mui:LinkGroup› ‹/mui:ModernWindow.MenuLinkGroups› - person VarunJi; 02.04.2014

Интересно, что в моей среде работает следующий код:

if (App.HasDashboardRole)
            {
                App.Current.Dispatcher.Invoke(new Action(() =>
                {
                    var bs = new BBCodeBlock();
                    bs.LinkNavigator.Navigate(new Uri("/Pages/Dashboard.xaml", UriKind.Relative), this);
                }));
            }
            else if (App.HasBarcodeBuilderRole)
            {
                App.Current.Dispatcher.Invoke(new Action(() =>
                {
                    var bs = new BBCodeBlock();
                    bs.LinkNavigator.Navigate(new Uri("/Pages/BarcodeBuilderPage.xaml", UriKind.Relative), this);
                }));
            }

Когда этот код не работает:

App.Current.Dispatcher.Invoke(new Action(() =>
                {
                    var bs = new BBCodeBlock();
                    if (App.HasDashboardRole)
                        bs.LinkNavigator.Navigate(new Uri("/Pages/Dashboard.xaml", UriKind.Relative), this);
                    else if (App.HasBarcodeBuilderRole)
                        bs.LinkNavigator.Navigate(new Uri("/Pages/BarcodeBuilderPage.xaml", UriKind.Relative), this);
                }));
person J-DawG    schedule 25.02.2015