使用MVVM更改windows存储应用程序中的框架
本文关键字:框架 应用程序 存储 MVVM 更改 windows 使用 | 更新日期: 2023-09-27 18:27:19
我正在用c#制作一个windows商店应用程序。在我的主页中,我有一个框架。我的按钮绑定到一个RelayCommand,当用户单击按钮时,框架应该会更改AddMovie框架。为什么它不改变框架?我的框架绑定到视图模型中的frame属性。
private Frame _frame;
public Frame Frame
{
get { return _frame; }
set
{
_frame = value;
OnPropertyChanged();
}
}
在构造函数中
_frame = new Frame();
NavToCommand = new RelayCommand(() =>
{
Frame.Navigate(typeof(AddMovie));
});
确保您在MainPage中用于导航的框架与您的应用程序用作其当前窗口内容的框架相同。
通常,您不需要在主页中创建新的框架。相反,它是在App.xaml.cs中设置的,方法如下:
/// <summary>
/// Invoked when the application is launched normally by the end user. Other entry points
/// will be used such as when the application is launched to open a specific file.
/// </summary>
/// <param name="e">Details about the launch request and process.</param>
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
Frame rootFrame = Window.Current.Content as Frame;
// Do not repeat app initialization when the Window already has content,
// just ensure that the window is active
if (rootFrame == null)
{
// Create a Frame to act as the navigation context and navigate to the first page
rootFrame = new Frame();
rootFrame.NavigationFailed += OnNavigationFailed;
if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
{
//TODO: Load state from previously suspended application
}
// Place the frame in the current Window
Window.Current.Content = rootFrame;
}
if (e.PrelaunchActivated == false)
{
if (rootFrame.Content == null)
{
// When the navigation stack isn't restored navigate to the first page,
// configuring the new page by passing required information as a navigation
// parameter
rootFrame.Navigate(typeof(MainPage), e.Arguments);
}
// Ensure the current window is active
Window.Current.Activate();
}
}
您可以在该阶段将rootFrame注入MainPage,并将其用于导航目的,而不是创建新实例。
但是,如果您想将Navigation与MVVM一起使用,请在我的另一个答案中查看如何实现NavigationService模式:https://stackoverflow.com/a/38362370/1008758