c# – MvvmCross,UWP,MessengerPlugin:无法加载页面
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – MvvmCross,UWP,MessengerPlugin:无法加载页面,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2473字,纯文字阅读大概需要4分钟。
内容图文
问题是:当我将IMvxMessanger的构造函数DI添加到ViewModel时出现错误:“无法加载页面”;如果我将删除此DI,我的工具工作正常.顺便说一下,IHelloService不会给出这个错误,只有没有IMvxMessanger才能正常工作.
我遵循了这本手册:https://mvvmcross.com/docs/a-windows-universal-app-platform-project
MvvmCross版本:4.4.0
代码示例:
FirstViewModel
public class FirstViewModel : MvxViewModel
{
private readonly IHelloService _helloService;
private readonly IMvxMessenger _messenger;
public FirstViewModel(IHelloService helloService, IMvxMessenger messenger)
{
_helloService = helloService;
_messenger = messenger;
}
private string _hello = "Hello MvvmCross";
public string Hello
{
get { return _hello; }
set { SetProperty(ref _hello, value); }
}
}
FirstView.xaml.cs
public sealed partial class FirstView : MvxWindowsPage
{
public FirstView()
{
InitializeComponent();
}
}
FirstView.xaml
<views:MvxWindowsPage
x:Class="MvvmCrossDocs.UWP.Views.FirstView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MvvmCrossDocs.UWP.Views"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:views="using:MvvmCross.WindowsUWP.Views"
mc:Ignorable="d">
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<StackPanel>
<TextBox Text="{Binding Hello, Mode=TwoWay}" />
<TextBlock Text="{Binding Hello}" />
</StackPanel>
</Grid>
建立
public class Setup : MvxWindowsSetup
{
public Setup(Frame rootFrame) : base(rootFrame)
{
}
protected override IMvxApplication CreateApp()
{
return new Core.App();
}
}
这也是App.xaml.cs中的这一行
if (rootFrame.Content == null)
{
var setup = new Setup(rootFrame);
setup.Initialize();
var start = Mvx.Resolve<IMvxAppStart>();
start.Start();
}
解决方法:
我相信问题是你在UWP项目中缺少MvxMessenger的bootstrap类. UWP使用Nuget 3引入的project.json模板.目前,当您安装nuget包时,不允许向项目添加附加文件.
解决方法是手动添加bootstrap文件夹和相关的插件bootstrap.cs文件,或者您可以在Setup.cs中注册插件的界面和实现.
引导方法:
创建一个MessengerPluginBootstrap.cs
using MvvmCross.Platform.Plugins;
namespace <<YOUR_NAMESSPACE>>.Bootstrap
{
public class MessengerPluginBootstrap
: MvxPluginBootstrapAction<MvvmCross.Plugins.Messenger.PluginLoader>
{
}
}
Setup.cs方法:
根据MvxMessengerHub实现注册IMvxMessenger的接口.
protected override void InitializeLastChance()
{
base.InitializeLastChance();
Mvx.RegisterSingleton<IMvxMessenger>(new MvxMessengerHub());
}
内容总结
以上是互联网集市为您收集整理的c# – MvvmCross,UWP,MessengerPlugin:无法加载页面全部内容,希望文章能够帮你解决c# – MvvmCross,UWP,MessengerPlugin:无法加载页面所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。