引用其他样式的 UWP MergedDictionary 样式会引发错误

2024-01-09

创建需要使用其他值的样式合并字典时遇到实际问题MergedDictionary (Brushes.xaml).

当我尝试从另一个文件引用它时,出现以下错误:

"Failed to assign to property 'Windows.UI.Xaml.ResourceDictionary.Source' because the type 'Windows.Foundation.String' cannot be assigned to the type 'Windows.Foundation.Uri'. [Line: x Position: y]"

例如。在资源词典中我有以下有效的内容..

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="Brushes.xaml" />
    </ResourceDictionary.MergedDictionaries>
    <Style TargetType="Button">
        <Setter Property="Background" Value="{StaticResource customBrush1}" />
        <Setter Property="Foreground" Value="{StaticResource customBrush2}" />

但是,这并不理想,因为我需要参考Brushes.xaml在每个样式资源字典中。所以我想做的是声明Brushes.xaml in App.xaml但我尝试的一切都会导致上述错误。它基本上不识别中定义的资源Brushes.xaml除非我将它们添加到每个单独的样式中。

例如。我想要什么(能够在 App.xaml 中执行操作)...

<Application x:Class="Test.UWP.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             RequestedTheme="Light">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="ms-appx:///Test.Xamarin.Forms.Themes.UWP/Brushes.xaml" />
                <ResourceDictionary Source="ms-appx:///Test.Xamarin.Forms.Themes.UWP/CustomStyles.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

CustomStyles.xaml包含

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="Styles\Button\BackButton.xaml" />
        <ResourceDictionary Source="Styles\Button\Default.xaml" />
        <ResourceDictionary Source="Styles\Button\HyperlinkBasicButton.xaml" />
        <ResourceDictionary Source="Styles\Button\HyperlinkButton.xaml" />
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

以及例如Styles\Button\Default.xaml包含..

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Style TargetType="Button">
        <Setter Property="Background" Value="{StaticResource CustomBrush1}" />
        <Setter Property="Foreground" Value="{StaticResource CustomBrush2}" />

其中 CustomBrush1 定义于Brushes.xaml.

我尝试过很多事情,例如尝试将 Brushes.xaml 添加到 CustomStyles.xaml - 不起作用。尝试将顺序更改为this https://learn.microsoft.com/en-us/windows/uwp/design/controls-and-patterns/resourcedictionary-and-xaml-resource-references声明它们应该按相反的顺序 - 这是行不通的。

非常感谢任何帮助,谢谢

根据评论,这是Brushes.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <SolidColorBrush x:Key="CustomBrush1"
                     Color="Black}" />
    <SolidColorBrush x:Key="CustomBrush2"
                     Color="White}" />
</ResourceDictionary>

根据您的描述,此行为是设计使然,派生出此document https://learn.microsoft.com/en-us/windows/uwp/design/controls-and-patterns/resourcedictionary-and-xaml-resource-references#lookup-behavior-for-xaml-resource-references我们可以找到。

然后,查找序列检查应用程序的运行时对象树中的下一个父对象......

如果你放置Brushes.xaml在专利层面,子层面Default.xaml无法获取画笔资源并抛出异常。最佳实践是参考Brushes.xaml在每个资源中,如上面提到的第一个场景。

And if Brushes.xaml and Default.xaml不在同一个文件夹中,我们需要使用ms-appx://方案参考一下。

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:TestApp.Styles.Button"
    >
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="ms-appx:///Brushes.xaml" />
    </ResourceDictionary.MergedDictionaries>
    <Style TargetType="Button">
        <Setter Property="Background" Value="{StaticResource CustomBrush1}" />
        <Setter Property="Foreground" Value="{StaticResource CustomBrush2}" />
    </Style>  
</ResourceDictionary>

然后将上面添加到CustomStyles.

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:TestApp"
    >
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="Styles/Button/Default.xaml" />
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

最后,我们只需要将 CustomStyles 添加到MergedDictionaries within App.xaml file

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

引用其他样式的 UWP MergedDictionary 样式会引发错误 的相关文章

  • 如何使用 LINQ ForEach 更改 List

    我有一个List
  • 以 ISO 8601 格式输出日期

    如何在 C 中获取以下格式的日期 2016 04 26T19 50 48Z include
  • OWIN AuthenticationOptions 在 mvc5 应用程序中运行时更新

    Hi 情况如下 我在 iis 7 上有一个带有 Identity 2 的 MVC 5 应用程序 该应用程序为多个网站提供服务 主机名是某些网站的关键 网站 另一个网站 等等 我决定在我的所有网站上使用谷歌外部登录 每个网站都应该是带有个人
  • 外部剃刀视图看不到外部模型

    我对外部剃刀视图有疑问 在我的项目中 我有主 mvc Web 程序集和动态加载的外部类库程序集 来自 DB 及其自己的控制器 视图和模型 这些程序集在运行时不会直接引用和加载 我能够通过为控制器创建自定义控制器工厂 为视图创建自定义虚拟路径
  • 多态性中基类缺少虚拟析构函数 = 资源泄漏?

    我们知道 如果要多态地使用基类 则需要将基类的析构函数指定为 virtual 否则程序中可能会出现资源泄漏 因为只会调用基类析构函数 而不会调用派生对象析构函数 我们还知道构造函数 析构函数纯粹是初始化 未初始化构造 而operator n
  • 如何将 QSerialPort 模块添加到 CMake 中?

    我想将 QSerialPort 模块添加到 CMake 中 根据我的理解 我需要将QT 串口添加到 pro中 我只想使用 CMake 所以我尝试编译简单的 CMake 文件 但有错误 QtCore 正在工作 qDebug 可以毫无问题地显示
  • MVVM 同步集合

    是否有一种标准化方法可以将 Model 对象集合与 C 和 WPF 中匹配的 ModelView 对象集合同步 我正在寻找某种类 可以使以下两个集合保持同步 假设我只有几个苹果 并且可以将它们全部保存在内存中 换句话说 我想确保如果我将 A
  • 用于 C/C++ 的独立跨平台 (Windows/Linux) 文件压缩?

    我正在寻找一个 最好是小的 C 或 C 开源库 我可以将其包含在我的 MIT 许可项目中 托管在 google 代码上 我是一名业余爱好 C C 程序员 所以我并不那么先进 但我只知道为名为 SA MP 的应用程序 适用于 Windows
  • Linux C++ 调试器

    我正在寻找完美的 Linux C 调试器 我不期望成功 但搜索应该提供丰富的信息 我是一个非常有能力的 gdb 用户 但 STL 和 Boost 很容易压垮我的调试技能 并不是说我无法深入了解数据结构的内部结构 而是它需要很长时间 我通常会
  • 持续运行的 C# 代码 - 服务还是单独的线程?

    我有一个 NET 4 Web 应用程序 它有 3 个关联的独立项目 DAL BAL 和 UI 我正在使用实体框架进行数据库交互 我有代码循环遍历一堆数据库数据 根据找到的内容调用方法 然后更新数据库 我希望这段代码一直运行 同时 我希望用户
  • 解析通过asp:FileUpload上传的XML文件

    我有一个场景 用户将上传 XML 文件 我想将该文件添加到数据库中的表中 不过 困难的部分是我需要解析文件 然后将一些信息添加到一些不同的表中 显示如何获取 XML 文件的每个示例都使用 URI 来获取文件 但是如何直接从数据库获取文件 或
  • Excel 2007 中的数值 - 底层 xml 文件中的表示与存储

    这个问题与 NET和OpenXml有关 我已经阅读了以下文章 它有很好的解释 但没有回答我的问题 Excel 2007 中数值的可视化与底层 xml 文件不一致 https stackoverflow com questions 58594
  • 内存不足异常

    我正在使用 C 和 asp net 开发一个网络应用程序 我一直收到内存不足的异常 该应用程序的作用是从数据源读取一堆记录 产品 可能是数百 数千 通过向导中的设置处理这些记录 然后使用处理的产品信息更新不同的数据源 虽然有多个 DB 类
  • 嘲笑会员用户

    我目前正在开发一个 asp net mvc 2 应用程序 它使用默认的 SqlMembershipProvider 进行身份验证 我已经实现了一个控制器方法 通过调用读取当前用户的 ProviderUserKeyMembership Get
  • 剥离 OLE 标头信息 (MS Access / SQL Server)

    我有一个 C 应用程序需要支持二进制数据库内容 图像等 当使用 MS Access 或 MS SQL Server 时 此数据被包装在 OLE 对象内 如何去除此 OLE 标头信息 请注意 我不能只查找特定标签的开头 因为内容可以是 png
  • 是否有理由为什么用 XmlInclude 修饰的基类在序列化时仍然会抛出类型未知的异常?

    我将简化代码以节省空间 但所提供的内容确实说明了核心问题 我有一个类 它的属性是基类型 有 3 个派生类可以分配给该属性 如果我将任何派生类分配给容器并尝试序列化容器 XmlSerializer 会抛出可怕的错误 类型 x 不是预期的 使用
  • 是否可以在 Eclipse 中为除 Java 之外的 Eclipse 编写插件?

    谁能帮我用c 写一个eclipse插件 weekens 和 celavek 感谢您提供的信息 我正在研究 JNI 并将尝试实现它 celavek 我们必须做什么样的主控 控制 在C 和java接口中处理是否风险更大 我的要求是在 Java
  • 64 位随机生成器种子

    我目前正在运行一个具有 8 个以上管道 线程 的多线程模拟应用程序 这些管道运行非常复杂的代码 该代码取决于种子生成的随机序列 然后该序列被归结为单个 0 1 我希望在将种子从主线程传递到处理管道后 这种 随机处理 具有 100 的确定性
  • 如何从与 C# lambda 集成(而非代理集成)的 Amazon API 网关获取正确的 http 状态代码?

    我正在使用 C lambda 与 API 网关集成 我希望 API 网关返回正确的错误代码 例如 400 404 500 等 API网关模块tf文件 provider aws version lt 2 70 0 region var aws
  • 有关 Endian 性和 .Net 的详细信息?

    我有几个关于字节顺序的问题 这些问题足够相关 我保证将它们作为一个问题提出 1 字节顺序是由 Net还是由硬件决定的 2 如果是由硬件决定的 我怎样才能在C 中找出硬件的字节序 3 字节序是否影响二进制交互 例如 OR AND OR 或移位

随机推荐

  • 包括所有依赖项

    我刚刚开始使用 WiX 因为我需要能够在我们的 CI 服务器上自动构建 MSI 有没有办法自动包含项目的所有依赖项 heat exe 的 proj 扩展变得越来越好 Heat http wixtoolset org documentatio
  • 对命名实体使用(NLP)门工具[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我可以使用GATE吗http gate ac uk http gate ac uk 在我的java程序中提取命名实体 如果是 您能否举
  • sphinx-build 失败 - autodoc 无法导入/查找模块

    我正在尝试开始使用 Sphinx 但似乎遇到了无情的问题 命令 docs sphinx quickstart 我回答了所有问题 一切正常 命令 docs ls 一切看起来都很正常 结果 build Makefile source 命令 sp
  • 改变网格的不透明度会产生“淡入”效果吗?

    我在创建网格淡入淡出效果时遇到一些问题 我想要点击后出现一个网格 这可能吗 Thanks 参加派对有点晚了 因为我刚刚写的与隐士戴夫几乎相同 但也许它有助于更 好地理解 另一种方法是 在 XAML 视图中设置 Storyboard 项 在我
  • 正则表达式不允许使用字符,除非转义

    下面是我的正则表达式来解析逗号分隔的键值对 function extractParams str var result str replace s s s s g function a b result a trim b trim retu
  • 如何在 Ruby 中创建双向 SSL 套接字

    我正在构建一个客户端 Ruby 库 它连接到服务器并等待数据 但也允许用户通过调用方法发送数据 我使用的机制是有一个初始化套接字对的类 如下所示 def initialize pipe r pipe w Socket pair UNIX S
  • 无法删除目录 ACE

    我正在使用 C 和 NET 4 编写一个类库 它通过网络与共享服务器上的文件系统进行交互 我正在尝试调整文件夹的某些权限 并且我完全有能力添加 ACE 但我很难删除它们 这是我到目前为止的代码 get ACEs for the workin
  • JPA 多线程 org.eclipse.persistence.exceptions.ConcurrencyException

    嗨 我尝试使用多线程JSOUP and JPA解析一些页面并将信息放入数据库中 但有时我会遇到此异常 Exception in thread Thread 7 Local Exception Stack Exception EclipseL
  • 多线程和递归结合在一起

    我有递归代码以深度优先的方式处理树结构 代码基本上是这样的 function TreeNode curr if curr children null curr children isEmpty for TreeNode n curr chi
  • ReST 低延迟 - 在上传待处理时我应该如何回复 GET?

    我正在设计一个ReST https restfulapi net 遵循基本的APICRUD https en wikipedia org wiki Create read update and delete图案 我的 API 可以接收更新资
  • 使用 linq2xml 订购 xml 文件

    以下问题使用 LINQ2XML 过滤 xml https stackoverflow com questions 11006160 filter xml with linq2xml 从 xml 文件成功过滤 删除节点 后 我想按节点中的某些
  • ASP.net 很好地渲染 HTML(美化)

    当我在 ASP net 中生成控件时 它们的结果如下 div class discussWrapper span class cbox highlighted span div
  • java.lang.IllegalArgumentException:解密图像时错误的base-64

    我正在使用 Jsoup 解析器选择图像 Elements images document select img String src images attr src 然后使用这段代码来摆脱data image jpg base64 pure
  • 温斯顿记录器名称

    Flatiron 的日志记录库 Winston 非常有用 但我不知道如何为记录器分配名称 我期待与其他日志库类似的输出 例如
  • Twitter Bootstrap TreeView 插件 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道 twitter bootstrap 中树视图的成熟插件吗 到目前为止我发现的大多数东西是 a
  • 如何在编译时计算类成员的偏移量?

    给定 C 中的类定义 class A public methods definition private int i char str 是否可以使用 C 模板元编程在编译时计算类成员的偏移量 该类不是 POD 并且可以具有虚拟方法 基元和对
  • R:如何根据另一个变量中的值选择 dplyr::distinct() 保留哪一行?

    现实生活中的问题 我的受试者有 MRI 扫描数据 其中一些已被扫描多次 单独的行 其中一些每次都是根据不同的协议进行扫描的 我想按主题 ID 保留所有唯一行 如果主题是在两种不同的协议下扫描的 我希望它更喜欢其中一种 玩具示例 librar
  • C++继承使用派生类调用基类成员函数

    也许我的问题是错误的 我是 C 新手 如果该函数在派生类中被重写 是否有任何方法使用派生类对象调用基类成员函数 例如 class A public void add cout lt lt A class B public A public
  • 如何将所有参数从 __init__ 传递给超类

    我可以在Python中使用什么魔法来通过添加一些额外的参数来有效地使用超级构造函数吗 理想情况下我想使用类似的东西 class ZipArchive zipfile ZipFile def init self verbose True kw
  • 引用其他样式的 UWP MergedDictionary 样式会引发错误

    创建需要使用其他值的样式合并字典时遇到实际问题MergedDictionary Brushes xaml 当我尝试从另一个文件引用它时 出现以下错误 Failed to assign to property Windows UI Xaml