UWP 应用程序中合并 ResourceDictionary 初始化

2024-06-18

在开发我的 UWP 应用程序期间,我注意到一些有趣的奇怪现象,我很难解释。

我使用 MvvmLight 并决定在单独的 ResourceDictionary 中添加 ViewModelLocator 资源实例核心.xaml这将被引用自MergedDictionaries in App.xaml。 以下是内容App.xaml:

<Application ...>
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Resources/Core.xaml" />
            <ResourceDictionary Source="Resources/Converters.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
</Application>

内容核心.xaml:

<ResourceDictionary ...>
    <viewModel:ViewModelLocator x:Key="Locator" />
</ResourceDictionary>

现在我认为资源在核心.xaml期间被初始化InitializeComponent方法调用应用程序.xaml.cs,但是当我尝试使用ServiceLocator类(在 MvvmLight 中 ViewModelLocator 的构造函数中设置) - 像这样 -ServiceLocator.Current.GetInstance<INavigationService>().Navigate<MainViewModel>();- 我收到一个例外:

An exception of type 'System.InvalidOperationException' occurred in
Microsoft.Practices.ServiceLocation.dll but was not handled in user code

Additional information: ServiceLocationProvider must be set.

事实上,如果我在 ViewModelLocator 的构造函数中放置一个断点,则在激活窗口之前不会调用它。更有趣的是 - 如果我手动引用Locator资源键(例如放置Debug.WriteLine(Resources["Locator"]);高于ServiceLocator),一切正常。如果我移动,情况也是如此ViewModelLocator资源直接到 App.xaml - 然后在期间实例化IntializeComponent.

UWP 应用程序中是否存在合并资源字典的延迟实例化?或者为什么它会这样?


A ResourceDictionary在 UWP 中没有任何隐藏代码(没有InitializeComponent)。因此,在 a 中定义的任何类引用ResourceDictionary不会直接初始化。

也没有App.InitializeComponent为你做这件事。 UWP 中的资源字典不提供此功能 - 不要问我为什么。

您可以通过尝试初始化来轻松尝试此操作DataTemplate in a ResourceDictionary.
遗憾的是,这应该不起作用。

然而,使用Resources["Locator"]后面代码中的访问会触发类的构造函数,就可以了。

这不是解决方案,而是对您的问题的解释。 我希望它对你有帮助。

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

UWP 应用程序中合并 ResourceDictionary 初始化 的相关文章

  • c和java语言中的换行符

    现在行分隔符取决于系统 但在 C 程序中我使用 n 作为行分隔符 无论我在 Windows 还是 Linux 中运行它都可以正常工作 为什么 在java中 我们必须使用 n 因为它与系统相关 那么为什么我们在c中使用 n 作为新行 而不管我
  • 用 C++ 进行服装建模 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在编写一些软件 最终会绘制一个人体框架 可以配置各种参数 并且计划是在假人身上放置某种衣服 我研究
  • Unix网络编程澄清

    我正在翻阅这本经典书籍Unix网络编程 https rads stackoverflow com amzn click com 0139498761 当我偶然发现这个程序时 第 6 8 节 第 179 180 页 include unp h
  • 在 Unity 进程和另一个 C# 进程之间进行本地 IPC 的最快方法 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我希望每秒大约 30 次从 C 应用程序向我的 Unity 应用程序传送大量数据 由于 Unity 不支持映射内存和管道 我考虑了 t
  • 生成(非常)大的非重复整数序列而不进行预洗牌

    背景 我编写了一个简单的媒体客户端 服务器 我想生成一个不明显的时间值 随从客户端到服务器的每个命令一起发送 时间戳中将包含相当多的数据 纳秒分辨率 即使它不是真正准确 因为现代操作系统中计时器采样的限制 等 我想做的 在 Linux 上
  • ASP.NET:获取自 1970 年 1 月 1 日以来的毫秒数

    我有一个 ASP NET VB NET 日期 我试图获取自 1970 年 1 月 1 日以来的毫秒数 我尝试在 MSDN 中寻找方法 但找不到任何东西 有谁知道如何做到这一点 从 NET 4 6 开始 该方法ToUnixTimeMillis
  • 使用 JNI 从 Java 代码中检索 String 值的内存泄漏

    我使用 GetStringUTFChars 从使用 JNI 的 java 代码中检索字符串的值 并使用 ReleaseStringUTFChars 释放该字符串 当代码在 JRE 1 4 上运行时 不会出现内存泄漏 但如果相同的代码在 JR
  • 在一个字节中存储 4 个不同的值

    我有一个任务要做 但我不知道从哪里开始 我不期待也绝对不想要代码中的答案 我想要一些关于该怎么做的指导 因为我感到有点失落 将变量打包和解包到一个字节中 您需要在一个字节中存储 4 个不同的值 这些值为 NAME RANGE BITS en
  • 如何使用 watin 中的 FileUploadDialogHandler 访问文件上传对话框

    我正在使用 IE8 和 watin 并尝试通过我的网页测试上传文件 我不能简单地使用 set 方法设置上传文件 例如 ie FileUpload Find ById someId Set C Desktop image jpg 因为上传文本
  • 批量更新 SQL Server C#

    我有一个 270k 行的数据库 带有主键mid和一个名为value 我有一个包含中值和值的文本文件 现在我想更新表格 以便将每个值分配给正确的中间值 我当前的方法是从 C 读取文本文件 并为我读取的每一行更新表中的一行 必须有更快的方法来做
  • 使用 Moq 使用内部构造函数模拟类型

    我正在尝试模拟 Microsoft Sync Framework 中的一个类 它只有一个内部构造函数 当我尝试以下操作时 var fullEnumerationContextMock new Mock
  • 等待线程完成

    private void button1 Click object sender EventArgs e for int i 0 i lt 15 i Thread nova new Thread Method nova Start list
  • 如何从main方法调用业务对象类?

    我已将代码分为业务对象 访问层 如下所示 void Main Business object public class ExpenseBO public void MakeExpense ExpensePayload payload var
  • 如何对 Web Api 操作进行后调用?

    我创建了一个 Web API 操作 如下所示 HttpPost public void Load string siteName string providerName UserDetails userDetails implementat
  • (de)从 CSV 序列化为对象(或者最好是类型对象的列表)

    我是一名 C 程序员 试图学习 C 似乎有一些内置的对象序列化 但我在这里有点不知所措 我被要求将测试数据从 CSV 文件加载到对象集合中 CSV 比 xml 更受青睐 因为它更简单且更易于人类阅读 我们正在创建测试数据来运行单元测试 该集
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 英特尔 Pin 与 C++14

    问题 我有一些关于在 C 14 或其他 C 版本中使用英特尔 Pin 的问题 使用较新版本从较旧的 C 编译代码很少会出现任何问题 但由于 Intel Pin 是操作指令级别的 如果我使用 C 11 或 C 14 编译它 是否会出现任何不良
  • 使用 GROUP 和 SUM 的 LINQ 查询

    请帮助我了解如何使用带有 GROUP 和 SUM 的 LINQ 进行查询 Query the database IEnumerable
  • 如何将 Roslyn 语义模型返回的类型符号名称与 Mono.Cecil 返回的类型符号名称相匹配?

    我有以下代码 var paramDeclType m semanticModel GetTypeInfo paramDecl Type Type Where paramDeclType ToString returns System Col
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个

随机推荐

  • 我可以将Chocolatey安装在C盘以外的其他盘吗?

    我喜欢使用 MacPorts 而 Chocolatey 是完美的替代应用程序 但是当我使用Windows时 我只将操作系统安装在C盘上 因此如果Windows系统有任何问题 我只需格式化我的C盘即可 所以 我的所有文件都存储在D或E盘中 我
  • 无法创建异步 Main

    我正在努力使Main异步 所以我尝试 class Program static async Task Main string args Books books new Books await books AddBooksAsync wher
  • 批量消费JMS消息

    The MessageListener接口只定义了一个方法onMessage接收单个Message作为论证 我正在寻找一种方法来获得多个Messages 从队列中 以便我可以处理该批次 然后确认所有Message批次中的 s JMS世界里有
  • 如何在wpf中翻转图像

    我最近学习了如何使用 TransformedBitmap 和 RotateTransformed 类旋转 BitmapImage 现在我可以对图像进行顺时针旋转 但如何翻转图像呢 我找不到执行 BitmapImage 水平和垂直翻转的类 请
  • 在后台轮询服务器的正确方法

    假设这是可能的 我希望我的 iOS 应用程序在后台时轮询服务器 即基本上每 30 分钟检索一次 URL 的内容 并通知用户是否包含 有趣 的内容 基本上以类似的方式如果您不使用推送通知 则内置邮件客户端假定的工作方式 现在 从我到目前为止的
  • Windows 操作系统中 ST_INO(os.stat() 输出)的含义

    谁能告诉我这个值的含义是什么st ino是跑步时os stat 在 Windows 上 Python 3 5 3 在早期的 Python 版本中 它包含虚拟值 但最近发生了变化 我找不到它是如何计算 生成的 我怀疑它因文件系统 NTFS F
  • 数据库锁定在 WAL 模式下,只有读取器

    在中使用System Data Sqlite 1 0 86 0 包括SQLite 3 7 17 预写式记录 http www sqlite org wal html模式下 我在并发读取时遇到数据库锁 如果我正确理解 WAL 则不应该出现这种
  • 为什么 BigInt(largeNumber) 仍然不精确?

    I want to find the sum of all digits of a large number for example 9995 我应用 BigInt 来获取大数的幂 并使用下面的代码将其数字相加 BigInt Math po
  • Oracle 语法 - 我们是否必须在新旧语法之间进行选择?

    我在一个由大约 8 名开发人员组成的团队中负责大约 1 000 000 行源代码的代码库 我们的代码基本上是一个使用 Oracle 数据库的应用程序 但代码随着时间的推移而不断发展 我们有大量九十年代中期的源代码 团队中就我们用于查询 Or
  • 为什么 angularjs bootstrap datepicker 选择前一天?

    我在用着AngularJS引导日期选择器指令 http angular ui github io bootstrap 当我从模型中设置日期时 它会选择所选日期之前的一天
  • MySQL - 从临时表插入

    这看起来非常简单 但我坚持使用简单的插入语句 见下文 begin work CREATE TEMPORARY TABLE IF NOT EXISTS insert table AS select r resource id fr file
  • 我怎样才能知道oracle 9i中哪些值是数字

    我有这个包含 varchar 的数据库 我想知道哪些记录保存数值 我试过REGEXP COUNT和其他 但我在 9i 上运行 我认为这是针对 10g gt 我怎样才能实现这个目标 I tried select to number my co
  • 使用 R 将我的 shapefile 数据投影到传单地图上

    我 在 Win7 上 试图获取我的 shapefile 数据 Here https www dropbox com s f3d46itleoozzjz shapefiles zip dl 0是数据文件 要使用显示leaflet包裹 但没有任
  • Google Colab 显示忙碌

    我昨天在 google colab 上进行了训练过程 现在 即使重新启动运行时并中断执行后 Google Colab仍显示繁忙 我想停止当前的执行 请帮忙 从运行时菜单中选择 重新启动运行时 就足够了 如果由于某种原因不起作用 您可以通过从
  • 随机采样数组的唯一子集

    如果我有一个数组 a 1 2 3 如何随机选择数组的子集 以使每个子集的元素都是唯一的 也就是说 对于a可能的子集是 1 2 3 1 2 2 3 1 2 3 我无法生成所有可能的子集 因为 a 的实际大小非常大 因此有很多很多子集 目前 我
  • jqGrid 将字段从文本切换为下拉列表

    我有一个 jqGrid 其中有一些列 其中 1 列是从数据库填充的下拉列表 选择 我想要的是 当我不在带有下拉列表的编辑模式列时 只需显示必须从查询中获取的文本 而当我处于编辑模式时 它应该显示下拉列表 就像这里一样 http www tr
  • 如何在 Slim Framework 3 上创建中间件?

    我阅读了文档here https www slimframework com docs concepts middleware html关于创建中间件 但我必须创建哪个文件夹或文件 文档不包含此信息 在 src 文件夹下我有middlewa
  • Bash while 循环等待任务完成

    我创建了一个 bash 脚本来处理文件夹及其子文件夹中的视频 find type f name mkv while read file do ffmpeg i file done 问题 它不是 while 循环等待 ffmpeg 完成 而是
  • 在工作表中合并行和求和值

    我有一个 Excel 工作表 其中包含以下数据 管道 来分隔列 A B C X 50 60 D E F X 40 30 A B C X 10 20 A B C Y 20 20 A B C X 20 70 D E F X 10 50 A B
  • UWP 应用程序中合并 ResourceDictionary 初始化

    在开发我的 UWP 应用程序期间 我注意到一些有趣的奇怪现象 我很难解释 我使用 MvvmLight 并决定在单独的 ResourceDictionary 中添加 ViewModelLocator 资源实例核心 xaml这将被引用自Merg