在 App.xaml 上添加 BasedOn 样式会在 App() { InitializeComponent(); 上崩溃}

2023-11-30

使项目适应模板10,我进入 App.xaml 中的继承样式崩溃了。

看起来像模板10,不支持继承或扩展样式。我试图延长字幕样式 from 标题样式但我收到 COM 异常获取Xaml类型 in XamlTypeInfo.g.cs

我的应用程序.xaml.cs

sealed partial class App : BootStrapper
{
    public App() { InitializeComponent(); }

    public override async Task OnStartAsync(StartKind startKind, IActivatedEventArgs args)
    {
        NavigationService.Navigate(typeof(ShellView))
        await Task.CompletedTask;
    }
}

我的应用程序.xaml

<Style x:Key="TitleStyle" TargetType="TextBlock">
    <Setter Property="Foreground" Value="{StaticResource TextTitleForeground}"/>
    <Setter Property="FontSize" Value="26"/>
    <Setter Property="TextWrapping" Value="Wrap"/>
    <Setter Property="FontWeight" Value="Medium"/>
</Style>
<Style x:Key="SubTitleStyle" TargetType="TextBlock" BasedOn="{StaticResource TitleStyle}">
    <Setter Property="Foreground" Value="{StaticResource TextForeground}"/>
    <Setter Property="FontSize" Value="20"/>
</Style>

异常信息:

Error HRESULT E_FAIL has been returned from a call to a COM component.

at System.Runtime.InteropServices.WindowsRuntime.IIterator`1.MoveNext()
at System.Runtime.InteropServices.WindowsRuntime.IteratorToEnumeratorAdapter`1.MoveNext()
at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
at Template10.Common.BootStrapper.<InitializeFrameAsync>d__77.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Template10.Common.BootStrapper.<InternalLaunchAsync>d__53.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__6_0(Object state)
at System.Threading.WinRTSynchronizationContext.Invoker.InvokeCore()

这让我深感困惑。我很容易就能重现这一点。然后,我可以轻松地重现这一点,而无需参考模板 10。有问题的代码是 T10 中的这个块:

// title
foreach (var resource in Application.Current.Resources
    .Where(x => x.Key.Equals(typeof(Controls.CustomTitleBar))))
{
    var control = new Controls.CustomTitleBar();
    control.Style = resource.Value as Style;
}

你可以将其简化为:

var a = Application.Current.Resources.ToArray();

放置在OnLaunched任何应用程序的应用程序。繁荣。当我们尝试访问资源集合但仅当BasedOn样式已添加到资源中。

在与平台团队坐下来尝试验证模板 10 的正确性后,桌子周围的每个人都开始摸不着头脑。而且,就在那时我意识到@dachibox,您在 XAML 平台中发现了一个真正的错误。

在我们更新模板 10 之前,这是当前唯一的解决方法。

<Page.Resources>
    <ResourceDictionary Source="..\Styles\Custom.xaml" />
</Page.Resources>

我的意思是,你在页面而不是应用程序中完成工作。那么,我们如何在不修复 XAML 平台的情况下修复模板 10 呢?看看我们将在 Bootstrapper 中使用的这段奇怪的代码:

int count = Application.Current.Resources.Count;
foreach (var resource in Application.Current.Resources)
{
    var k = resource.Key;
    if (k == typeof(Controls.CustomTitleBar))
    {
        var s = resource.Value as Style;
        var t = new Controls.CustomTitleBar();
        t.Style = s;
    }
    count--;
    if (count == 0) break;
}

错误至少出现在迭代器的 count 属性中,当您迭代它时,该属性似乎是递增而不是递减。疯了吧?事实证明,这个迭代路径并不是一个常见的用例。但是,现在这并不重要,由于您在这里提出问题,我们已经举旗了。

我将在本周某个时间更新模板 10 并进行修复。

祝你好运,杰瑞

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

在 App.xaml 上添加 BasedOn 样式会在 App() { InitializeComponent(); 上崩溃} 的相关文章

随机推荐

  • nasm 从另一个文件调用子例程

    我正在做一个项目 该项目将我编写的子例程附加到老师包含的主文件中 他给了我们使子程序全局化的说明 但显然我是个白痴 这两个asm文件位于同一个文件夹中 我正在使用nasm f elf g prt dec asm and ld prt dec
  • Excel VBA 错误 424

    我正在尝试根据其列将 vba 中的一些单元格从用户选择的 Excel 文件 req 复制到另一个固定文件 rfqq 下面是我的代码 它带来错误 424 需要对象 有人可以帮忙吗 我是新手 希望得到一个非常简单的答案 Sub rfqo Dim
  • MIPS 如何比较从输入中获取的字符?

    我的程序询问用户他 她正在考虑的数字是否在列表中 用户输入y或n 如何检查用户是否在汇编中输入了 y 或 n 将用户输入放入寄存器中是否足够 如果等于 121 y 的十进制 ASCII 代码 则分支 或者如果该值等于 110 n 的十进制
  • 使用 Azure Active Directory 进行身份验证时进行 Azure 管理库 API 调用时出错

    我的公司正在研究在 Azure 上进行报告 我们只希望客户向我们提供只读凭据供我们使用 我做了一些研究 看起来 Azure Active Directory 就是这么做的 因此 我希望使用只读 Azure 目录应用程序进行身份验证 为了让我
  • 如何在Mongo中“(WHERE)列=列”?

    我喜欢 Mongo 做简单的事情 所以我希望用它来做更高级的事情 在我需要这个之前 这一切都很好 UPDATE tbl SET a b WHERE c lt gt 0 The a b部分是我无法弄清楚的 我尝试了 mongodb org 但
  • Join表的最后一条记录

    我正在寻找正确的 SQL 代码来连接 2 个表并仅显示详细信息表的最后一条记录 我有一个有 2 个表的数据库 Deals DealID Dealname DealDetails DealComments dcID DealID Commen
  • 突出显示输入字段中的文本

    我正在尝试在 JS 中创建一个脚本 突出显示用户输入的某些文本 有点像来自的 测试字符串 框 https regex101 com 但似乎无法在使用时更改输入字段本身内的文本 有谁知道我该怎么做 无法设置内容的样式input字段 或text
  • 我怎样才能将双标参数折叠成空?

    在方法调用中对空数组进行 Splat 扩展 可以有效地将参数减少为空 为了清楚起见 添加了空括号 def foo end def bar args foo args end bar 1 ArgumentError as expected b
  • C++ 中的动态对象?

    我意识到我很可能会得到很多 你不应该这样做 因为 的答案 他们是最受欢迎的 我可能会完全同意你的推理 但我很好奇这是否是可能的 正如我所设想的那样 是否可以在 C 中定义一种动态 通用对象类型 在其中我可以动态创建在系统的键 值类型中存储和
  • 如何判断屏保正在运行?

    人们可能建议的一种解决方案是定期查找特殊的 屏幕保护程序 桌面 如果存在 则将其视为正在运行的屏幕保护程序 但显然并非所有屏幕保护程序都是如此 因为某些提到的桌面始终存在 有没有更可靠的解决方案 请参阅带有 SPI GETSCREENSAV
  • 在开玩笑的测试中,shallow 抛出意外的 token < 错误

    我目前正在使用以下堆栈设置单元测试 React v15 组件是用 typescript tsx 编写的 测试设置是使用 jest v21 和酶 v3 完成的 测试文件被编写为普通的 js 文件 不幸的是 酶似乎出了问题 因为我不断收到错误
  • 淘汰赛绑定不会使用简单可观察值数组进行更新

    我的视图模型中有一个字符串列表 要编辑它们 我希望每个都显示为 li 带有一个文本框和一个 li
  • python pandas 3个最小值和3个最大值

    如何在 pandas 数据框中的列中找到 3 个最小值和 3 个最大值的索引 我找到了找到最大值和最小值的方法 但没有找到找到 3 的方法 你尝试了什么 你可以排序s sort 然后打电话s head 3 index and s tail
  • 如何存储配置文件并使用 React 读取它

    我是 React js 的新手 我已经实现了一个组件 在该组件中我从服务器获取数据并使用它 如下所示 CallEnterprise function TenantId fetchData http xxx xxx xx xx 8090 En
  • 使用控制器之间的共享服务进行脏检查,一种方法有效,另一种则无效?

    在尝试回答有关在两个单独的控制器之间共享数据的问题时 我遇到了一个问题 我通常使用服务来完成此任务并开始创建 jsfiddle 但我无法让它工作 经过一番调试后 如果我在中动态创建属性setActivePersonWorks person
  • Android,快速有效地查找目录大小的方法?

    在我的应用程序中 我想找到许多目录的大小 并且需要它快速运行 我见过这些方法 其中两个不够快 第三个仅适用于Java 不适用于Android First public static long folderSize File director
  • codeigniter 301 使用旧 url 的路由器进行重定向,并且不保留重定向

    我有一个 codeigniter 网站 我正在为其做 SEO 所以问题是大多数 url 都缓存在搜索引擎中 我的旧 url 是 product details productname productid 我的新网址将是 tours city
  • 无法解析:com.google.firebase:firebase-auth:9.0.0 [重复]

    这个问题在这里已经有答案了 As per Firebase Android 代码实验室教程 同时添加com google firebase firebase auth 9 0 0在 build gradle 依赖项中 出现以下错误 错误 2
  • JS 对象字面量中的“类似方法”语法是什么[重复]

    这个问题在这里已经有答案了 使用ES6类糖 我们可以这样定义函数 class Foo constructor props myFn 在 JS 对象字面量中 我们可以定义getters and setters像这样 foo get data
  • 在 App.xaml 上添加 BasedOn 样式会在 App() { InitializeComponent(); 上崩溃}

    使项目适应模板10 我进入 App xaml 中的继承样式崩溃了 看起来像模板10 不支持继承或扩展样式 我试图延长字幕样式 from 标题样式但我收到 COM 异常获取Xaml类型 in XamlTypeInfo g cs 我的应用程序