导航到页面时未执行 ViewModel 构造函数,mvvm
ViewModel constructor not executed when page is navigated to, mvvm
我有一个要导航到的 PopUp 页面。我遇到的问题是在调试代码时从不执行构造函数。我在这个应用程序中有其他页面都可以正常工作,还有另一个弹出页面可以正常执行构造函数。
我在 ViewModel
位置使用 Prism Mvvm。我仔细检查了所有命名空间是否正确,您将在下面看到所有这些。如果有人以前遇到过这个,请帮我解决这个问题。该视图也在我的 App.xaml.cs
中注册为 Navigation
查看
<popup:PopupPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:popup="clr-namespace:Rg.Plugins.Popup.Pages;assembly=Rg.Plugins.Popup"
xmlns:templates="clr-namespace:MyApp.Views.Templates;assembly=MyApp"
xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
prism:ViewModelLocator.AutowireViewModel="True"
mc:Ignorable="d"
x:Class="MyApp.Views.UserProfileView">
<ScrollView VerticalOptions="Center">
<Frame Margin="15"
BackgroundColor="White">
<StackLayout IsClippedToBounds="True"
Padding="10, 5"
Spacing="3">
<Label Text="Test"/>
<Button Text="Go Back" Command="{Binding GoBackCommand}"/>
</StackLayout>
</Frame>
</ScrollView>
</popup:PopupPage>
视图模型
namespace MyApp.ViewModels
{
public class UserProfileView : BaseViewModel
{
private INavigationService _navigationService;
public DelegateCommand GoBackCommand { get; }
public UserProfileView(INavigationService navigationService)
{
_navigationService = navigationService;
GoBackCommand = new DelegateCommand(async () => await _navigationService.GoBackAsync());
}
}
我如何导航到上面的页面
private async void NavigateToUserProfileView()
{
await _navigationService.NavigateAsync("UserProfileView");
}
除非问题中有拼写错误,并且除非已更改默认约定,否则视图 UserProfileView
的视图模型应称为 UserProfileViewModel
以供 ViewModelLocator
.
我有一个要导航到的 PopUp 页面。我遇到的问题是在调试代码时从不执行构造函数。我在这个应用程序中有其他页面都可以正常工作,还有另一个弹出页面可以正常执行构造函数。
我在 ViewModel
位置使用 Prism Mvvm。我仔细检查了所有命名空间是否正确,您将在下面看到所有这些。如果有人以前遇到过这个,请帮我解决这个问题。该视图也在我的 App.xaml.cs
中注册为 Navigation
查看
<popup:PopupPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:popup="clr-namespace:Rg.Plugins.Popup.Pages;assembly=Rg.Plugins.Popup"
xmlns:templates="clr-namespace:MyApp.Views.Templates;assembly=MyApp"
xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
prism:ViewModelLocator.AutowireViewModel="True"
mc:Ignorable="d"
x:Class="MyApp.Views.UserProfileView">
<ScrollView VerticalOptions="Center">
<Frame Margin="15"
BackgroundColor="White">
<StackLayout IsClippedToBounds="True"
Padding="10, 5"
Spacing="3">
<Label Text="Test"/>
<Button Text="Go Back" Command="{Binding GoBackCommand}"/>
</StackLayout>
</Frame>
</ScrollView>
</popup:PopupPage>
视图模型
namespace MyApp.ViewModels
{
public class UserProfileView : BaseViewModel
{
private INavigationService _navigationService;
public DelegateCommand GoBackCommand { get; }
public UserProfileView(INavigationService navigationService)
{
_navigationService = navigationService;
GoBackCommand = new DelegateCommand(async () => await _navigationService.GoBackAsync());
}
}
我如何导航到上面的页面
private async void NavigateToUserProfileView()
{
await _navigationService.NavigateAsync("UserProfileView");
}
除非问题中有拼写错误,并且除非已更改默认约定,否则视图 UserProfileView
的视图模型应称为 UserProfileViewModel
以供 ViewModelLocator
.