Насколько я понимаю, вы пытаетесь использовать фрейм, в который вы помещаете страницу, чтобы не открывать новое окно.
Для того, чтобы страница появилась в фрейме, вы предполагаете, для использования метода «Навигация» не устанавливайте свойство содержимого (https://docs.microsoft.com/fr-fr/dotnet/api/system.windows.controls.frame?view=netcore-3.1). (В противном случае, если вы просто хотите установить содержимое, вы должны использовать ContentPresenter).
Таким образом, обновление будет выглядеть так:
private void Update(object sender, RoutedEventArgs e)
{
Main.Navigate(new UpdateCio());
}
То, что это говорит о том, что страница "UpdateCio.xaml "должно быть показано внутри фрейма:
<Frame x:Name="Main"/>
Он не заменит оставшуюся часть кода xaml, который вы определили, поэтому он появится позади другой stackPanel.
Вы можете изменить положение th Frame и xaml UpdateCio, так что он появляется сверху и скрывает остальную часть окна за ним. (Немного странно).
Или вы действительно можете использовать «Рамки и страницы» и навигационную систему и определить главное окно, в котором будут отображаться разные страницы).
MainWindow.xaml
<Grid HorizontalAlignment="Center"
VerticalAlignment="Center" >
<Frame x:Name="Main"/>
</Grid>
MainWindow.xaml.cs:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
//Set the initial page (you could also do it in xaml by setting the Source property of the Frame
Main.Navigate(new IdentificationPage());
}
}
IdentificationPage.xaml (xaml, который вы имели в своем Окне минус Фрейм + становится Страницей вместо Окна).
<Grid>
<StackPanel Margin="10 10 10 20"
Orientation="Vertical"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Width="357">
<Label Content="User Name:"/>
<TextBox Margin="0,0,3,0"/>
<Label Content="Your Password"/>
<PasswordBox Margin="0,0,3,0"/>
<StackPanel Orientation="Horizontal"
HorizontalAlignment="Center"
Margin="10">
<Button x:Name="ForUpdate"
Content="Match"
Click="Update"/>
</StackPanel>
</StackPanel>
</Grid>
IdentificationPage.xaml.cs:
public partial class IdentificationPage : Page
{
public IdentificationPage()
{
InitializeComponent();
}
private void Update(object sender, RoutedEventArgs e)
{
//From a page, you have to use "NavigationService to Navigate"
//(the .Navigate method appear only if the class inherits from Page)
NavigationService.Navigate(new UpdateCio());
}
}
UpdateCio.xaml, который по-прежнему является страницей, а не окном (это то, что сначала запутало меня):
<Grid>
<StackPanel HorizontalAlignment="Center"
VerticalAlignment="Center">
<Label Content="this is test!"/>
</StackPanel>
</Grid>
UpdateCio.xaml.cs:
public partial class UpdateCio : Page
{
public UpdateCio()
{
InitializeComponent();
}
}
Дайте мне знать, какое решение вы выбрали в конце.