Как перейти на другую страницу с помощью кнопки в WPF
у меня есть второй .страница xaml настроена под именем Page2.xaml
и я хочу сделать так, чтобы при нажатии моей кнопки пользователь переходил в Page2.xaml
у меня есть это для моей кнопки внутри моего Page1.xaml
:
<Grid>
<Button x:Name="localModeBtn"
Style="{StaticResource MainButtonStyle}"
Content="local mode"
Click="localModeBtn_Click" />
</Grid>
и для обработчика событий button:
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
Итак, я не вижу, где я ошибся?
6 ответов
решение моего собственного вопроса:
Я чувствую себя немного глупо, обеспечивая решение на мой собственный вопрос, но благодаря Jasti это ссылке я смог разобраться в своем коде. Поскольку он только опубликовал комментарий, Я не могу отметить его как ответ, поэтому вот решение.
Я изменил окно навигации на окно и вставил:
<DockPanel>
<Frame x:Name="_NavigationFrame" NavigationUIVisibility="Hidden" />
</DockPanel>
и в конструкторе главного окна.код XAML.cs я добавил:
_NavigationFrame.Navigate(new Page1());
тогда последним шагом было настройте обработчик событий button на:
this.NavigationService.Navigate(new Uri("Pages/Page2.xaml", UriKind.Relative));
для этого вам не нужен код c#, просто сделайте это в XML:
<Button Content="local mode"
Command="NavigationCommands.GoToPage"
CommandParameter="/Page2.xaml"/>
(переформатированный код не протестирован)
вы должны использовать это, это работает для меня:
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
страницы со страницей.правильное имя xaml в вашем решении.
после этого, вы должны использовать его методы, чтобы сделать ее функциональной.
используйте любой контейнер и свяжите содержимое с любым свойством в viewmodel или codebehind. После этого вам просто нужно обновить свойство, установив новую страницу и вызвав событие PropertyChanged (см. интерфейс INotifyPropertyChanged). Это обновит содержимое вашего контейнера, и вы сможете отображать все, что захотите.
в случае, если вы хотите отдельное окно
NavigationWindow navWIN = new NavigationWindow();
navWIN.Content = new pageWFbchAdmin();
navWIN.Show();
//winBchAdmin.ShowDialog();
private void Navigate_Click(object sender, RoutedEventArgs e)//By Prince Jain
{
this.NavigationService.Navigate(new Uri("Page3.xaml", UriKind.Relative));
}