gpt4 book ai didi

c# - 使用 MVVM 在 Windows 商店应用程序中更改框架

转载 作者:行者123 更新时间:2023-12-03 10:44:21 27 4
gpt4 key购买 nike

我正在用 c# 制作一个 Windows 商店应用程序。在我的 MainPage 里面我有一个框架。我的按钮绑定(bind)到 RelayCommand,当用户单击按钮时,框架应更改 AddMovie 框架。为什么它不会改变框架?我的框架绑定(bind)到我的 View 模型中的框架属性。

 private Frame _frame;

public Frame Frame
{
get { return _frame; }
set
{
_frame = value;
OnPropertyChanged();
}
}

在构造函数中
   _frame = new Frame();
NavToCommand = new RelayCommand(() =>
{
Frame.Navigate(typeof(AddMovie));
});

最佳答案

确保您在 MainPage 中用于导航的框架与您的应用程序用作当前窗口内容的框架相同。

通常您不需要在 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 注入(inject) MainPage 并将其用于导航目的,而不是创建新实例。

但是,如果您想将 Navigation 与 MVVM 一起使用,请在此处查看如何在我的其他答案中实现 NavigationService 模式:
https://stackoverflow.com/a/38362370/1008758

关于c# - 使用 MVVM 在 Windows 商店应用程序中更改框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34363934/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com