it-swarm.com.ru

Как перейти на другую страницу с помощью кнопки в WPF

У меня есть вторая страница .xaml, настроенная под именемPage2.xaml, и я хочу сделать так, чтобы при нажатии моей кнопки пользователь перенаправлялся наPage2.xaml

У меня есть это для моей кнопки внутри моегоPage1.xaml:

<Grid>
    <Button x:Name="localModeBtn" 
            Style="{StaticResource MainButtonStyle}"  
            Content="local mode" 
            Click="localModeBtn_Click" />
</Grid>

А для обработчика событий кнопки:

private void localModeBtn_Click(object sender, RoutedEventArgs e)
    {
        Uri uri = new Uri("Page2.xaml", UriKind.Relative);
        this.NavigationService.Navigate(uri);
    }

При нажатии на кнопку я получаю сообщение об ошибке «Не удается найти ресурсpage2.xaml» Дело в том, чтоPage2.xamlнаходится в той же папке, что иPag1.xaml, поэтому я не могу видеть, где Я ошибся?

9
galacticfan

Решение моего собственного вопроса:

Я чувствую себя немного глупо, предлагая решение моего собственного вопроса, но благодаря ссылке Джасти я смог разобраться со своим кодом. Поскольку он только оставил комментарий, я не могу пометить его как ответ, так что вот решение.

Я изменил NavigationWindow на Окно и вставил:

<DockPanel>
    <Frame x:Name="_NavigationFrame" NavigationUIVisibility="Hidden" />
</DockPanel>

И в конструкторе MainWindow.xaml.cs я добавил:

_NavigationFrame.Navigate(new Page1());

Затем последним шагом было настроить обработчик события кнопки на:

this.NavigationService.Navigate(new Uri("Pages/Page2.xaml", UriKind.Relative));
14
galacticfan

Вы должны использовать это, это сработало для меня :

var Page2= new Page2(); //create your new form.
Page2.Show(); //show the new form.
this.Close(); //only if you want to close the current form.

В вашем решении есть variable type страницы с правильным именем page.xaml .. После этого вы должны использовать ее методы, чтобы сделать это функционально.

1
Milad Xandi

Для этого вам не нужен код на C #, просто сделайте это в XML:

<Button Content="local mode"
    Command="NavigationCommands.GoToPage"
    CommandParameter="/Page2.xaml"/>

(Переформатированный код не проверен)

1
lahjaton_j

Если вы хотите отдельное окно

NavigationWindow navWIN = new NavigationWindow();
navWIN.Content = new pageWFbchAdmin();
navWIN.Show(); 
//winBchAdmin.ShowDialog();
0
paparazzo
private void Navigate_Click(object sender, RoutedEventArgs e)//By Prince Jain 
{
    this.NavigationService.Navigate(new Uri("Page3.xaml", UriKind.Relative));
}
0
Prince Jain

Используйте любой контейнер и привяжите содержимое к любому свойству в вашей viewmodel или codebehind . После этого вам просто нужно обновить свойство, установив новую страницу и вызвать событие PropertyChanged (см. Интерфейс INotifyPropertyChanged). Это обновит содержимое вашего контейнера, и вы сможете отобразить все, что захотите.

0
Florian