MvvmCross MvxWindowsPage 编译错误

2023-11-29

我正在写一个Xamarin.iOS, Xamarin.Android and UWP使用 MvvmCross 框架的跨平台应用程序。

我正在制作一个具有 LoginViewModel 的 LoginPage。在里面Xamarin.iOS, Xamarin.Android项目中,ViewModel 和 View 的绑定与下面的效果很好

public class LoginActivity : MvxAppCompatActivity<LoginViewModel> 
public partial class LoginViewController : MvxViewController<LoginViewModel>  

尝试执行与上面相同的操作UWP项目,我收到一些错误。

在 XAML 中:

<views:MvxWindowsPage
x:TypeArguments="viewModels:LoginViewModel" x:Class="MyApp.UWP.Views.LoginView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:views="using:MvvmCross.WindowsUWP.Views"
xmlns:viewModels="using:MyApp.PresentationCore.ViewModels"
mc:Ignorable="d">

我的 C# 代码是

public sealed partial class LoginView : MvxWindowsPage<LoginViewModel>

但我收到编译错误。我该如何解决它们?

  • 元素“MvxWindowsPage”上的“未知成员“TypeArguments”
  • 命名空间“using:MyApp.PresentationCore.ViewModels”中不存在名称“LoginViewModel”。
  • GenericArguments[0], 'System.Object', on 'MvvmCross.WindowsUWP.Views.MvxWindowsPage`1[TViewModel]' 违反了 “TViewModel”类型的约束。

我认为这些错误有点含糊,因为第一个错误没有模板化版本,但第三个错误与模板约束违规有关。

我知道有一个选项可以使用命名约定或属性绑定 ViewModel 和 View,但我想使用这个强类型解决方案。


不幸的是我相信UWP不支持TypeArguments以及随后的基页的通用类型参数。您可以查看Prism GitHub 线程他们讨论的地方。因此,您必须选择其他注册选项之一。


Mvvmcross 提供了各种替代方法来注册您的View to a ViewModel。在 Mvvmcross 初始化期间,它将尝试注册您的ViewModel给你的View using MvxViewModelViewTypeFinder按以下顺序:

基于属性的注册:

你可以加MvxViewFor属性到您的页面类。

[MvxViewFor(typeof(FirstViewModel))]
public sealed partial class FirstView : MvxWindowsPage
{
    public FirstView()
    {
        this.InitializeComponent();
    }
}

基于具体类型的注册:

您可以注册您的View给你的ViewModel通过指定 ViewModel 的具体类型。

public sealed partial class FirstView : MvxWindowsPage
{
    public new FirstViewModel ViewModel => base.ViewModel as FirstViewModel;

    public FirstView()
    {
        this.InitializeComponent();
    }
}

或者对于 Android 和 iOS,可以使用通用基类:

// Android
public class FirstActivity : MvxAppCompatActivity<FirstViewModel>

// iOS
public class FirstViewController : MvxViewController<FirstViewModel>

基于公约的注册:

您可以让您的视图和 ViewModel 遵循相同的命名约定,Mvvmcross 将为您映射它们(xxxView 和 xxxViewModel)

View

public sealed partial class FirstView : MvxWindowsPage
{
    public FirstView()
    {
        this.InitializeComponent();
    }
}

视图模型

public class FirstViewModel : MvxViewModel
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MvvmCross MvxWindowsPage 编译错误 的相关文章

  • 删除文件的最后 10 个字符

    我想删除文件的最后 10 个字符 说一个字符串 hello i am a c learner 是文件内的数据 我只是希望该文件是 hello i am a 文件的最后 10 个字符 即字符串 c learner 应在文件内消除 解决方案 将
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • Docker 无法加载源 https://api.nuget.org/v3/index.json 的服务索引

    我有同样的问题 我怀疑这与代理背后有关 我的 Dockerfile 是 FROM microsoft aspnetcore build 2 0 AS build env WORKDIR app Copy csproj and restore
  • Http 请求未路由到 Https NodeJs

    我有我的服务器Google App Engine我正在使用 npm 模块是的 https 下面是我为了限制对 Https 的请求而编写的代码 app use yes maxAge 86400 defaults 86400 includeSu
  • 删除字符串中的重复字符

    这是破解 编码访谈书 的成果 设计算法并编写代码来删除字符串中的重复字符 无需使用任何额外的缓冲区 注意 一两个附加变量就可以了 数组的额外副本不是 书中说时间复杂度为 O N 2 我们如何从解中得知时间复杂度为 O N 2 我对解决方案如
  • Python Web 框架、WSGI 和 CGI​​ 如何结合在一起

    我有一个Bluehost我可以在其中将 Python 脚本作为 CGI 运行的帐户 我想这是最简单的 CGI 因为要运行我必须在中定义以下内容 htaccess Options ExecCGI AddType text html py Ad
  • 在 VS Code 中运行 Python 脚本时如何隐藏文件路径?

    每次我运行代码时 底部的终端都会显示这个长名称 我认为是文件位置 以及它应该显示的任何输出 有没有办法让它消失 它看起来是这样的 administrator Machintosh 2 Exercise Files Python user b
  • 在matlab中使用parfor进行嵌套循环

    我想为每个 block1 并行化 block2 并也并行化外循环 以前的代码 for i rangei
  • 在 Javascript 中将 RTF 转换为 HTML

    有没有办法在 Javascript 中将 RichTextFormat 转换为 HTML 我正在尝试粘贴从剪贴板复制的 RTF 内容 我正在获取文本 rtf 内容 现在我需要在 div 中应用所有样式来显示它 我怎样才能实现这个目标 有什么
  • 使用相同的接口但不同的构造函数参数注册多个单例

    我有 2 个存储 Azure 帐户 我们可以将它们称为 src 和 dest 并且我有需要访问这两个帐户的控制器 我正在尝试找出如何有条件地注册这 2 个单例 This answer给了我一些希望 但我无法完全解决 我想做的是 欣赏 Reg
  • Firebase 数据库按更深的子级排序

    考虑 Firebase 数据库的以下结构 root game1 playerUidA 得分 50 playerUidB 得分 10 game2 playerUidC 得分 20 playerUidD 得分 30 game3 我想运行一个查询
  • 如何隐藏 html 表单选择选项?

    我有一个非常简单的表单 我想在另一个选择字段对其进行细化时隐藏选择选项 目前我已经尝试过dispay none作为我的选项的内联样式 但它不会隐藏它 我正在使用 Chrome 这需要在所有浏览器上运行 任何人都可以透露一些信息 因为我似乎无
  • 更改 MATLAB 图的缩放比例

    我有一个在 x 轴上显示 20 000 个点的图形 所以 将 x 轴标记为 0 20 000 然而 现在我想扩大规模 从 0 到 50 但是当我尝试在绘图窗口中执行此操作时 它只是 显示前 50 点 而不是更改比例 有没有 有什么简单的方法
  • 悬停时图像放大

    Code https jsfiddle net xakhLafd Hello 我正在尝试在悬停时放大图像并使用轻松过渡 它可以工作 但有时似乎会出错 我尝试通过设置来解决这个问题 webkit transition property hei
  • 如何将Codeigniter与MSSQL(SQL Server)连接?

    我的服务器使用 Windows Server 和 MSSQL 2012 而我使用 OS X El Capitan 和 XAMPP Apache for Mac 并使用 Codeigniter 2 2 0 开发网站 这是我的配置 active
  • 在Java中实现选择表示法的好方法是什么?

    最好是用Java 这是我所拥有的 x choose y public static double choose int x int y if y lt 0 y gt x return 0 if y 0 y x return 1 double
  • 框架中的 Python Tkinter 标签

    我想在 tkinter 的框架内放置一个标签 但我不知道如何实际将其放入其中 import tkinter from tkinter import W tkinter Tk W geometry 800x850 0 0 W configur
  • 使用 r 的异步网络 IO:任何现有的包 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 是否有任何 R 项目包可以促进异步网络 IO 我认为这里类似于 Ruby 的 Eventmachine 或 Python 的 Twisted 如果有
  • 管理托管 (C#) 和非托管 (C++) 对象的析构函数

    我在 C DLL 中有一个托管对象 它维护 C DLL 中非托管对象的匿名整数句柄 在 C DLL 内部 匿名整数在 std map 中用于检索非托管 C 对象 通过这种机制 我可以使用匿名整数句柄维护托管对象和非托管对象之间的松散关联 在
  • 如何在 ClearCase UCM 中通过给定视图名称检索流名称?

    我试图弄清楚如何检索给定视图所属的流 当我使用 ClearCase Explorer 并右键单击视图的属性时 我得到了它的流名称 但我找不到如何使用脚本检索它 流信息不会出现在视图 vws 文件或注册表中 我知道我可以做一些操作来从视图的配
  • g++ 不显示“未使用”警告

    我有一段 C 代码 include
  • MvvmCross MvxWindowsPage 编译错误

    我正在写一个Xamarin iOS Xamarin Android and UWP使用 MvvmCross 框架的跨平台应用程序 我正在制作一个具有 LoginViewModel 的 LoginPage 在里面Xamarin iOS Xam