You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UWP应用使用BodyTextBlockStyle等TextBlock样式时崩溃该如何解决

问题原因

你遇到的崩溃是XAML加载时找不到BodyTextBlockStyle、BodyStrongTextBlockStyle对应的资源,抛出HRESULT异常导致的,和你堆栈中winrt::throw_hresult的报错位置完全匹配。这两个样式是Windows 10 1809版本(内部版本17763)及以上才原生自带的UWP主题资源,低版本系统或未正确引入WinUI库时就会触发崩溃。

解决步骤

1. 调整项目目标版本

右键UWP项目选择「属性」,切换到「应用」选项卡:

  • 目标版本设置为**Windows 10 版本1809(17763)**及以上
  • 最低版本如果需要兼容低于17763的系统,后续需要添加回退样式兼容

2. (可选)引入WinUI 2库(推荐)

如果需要跨版本统一样式,可通过NuGet引入WinUI 2.x:

  • 安装最新稳定版Microsoft.UI.Xaml 2.x系列NuGet包(3.x为WinAppSDK专用,不适用UWP)
  • 在App.xaml中合并WinUI资源字典:
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

3. 正确引用样式

在XAML中使用ThemeResource引用样式,适配系统深浅色主题:

<TextBlock Text="普通文本" Style="{ThemeResource BodyTextBlockStyle}"/>
<TextBlock Text="加粗文本" Style="{ThemeResource BodyStrongTextBlockStyle}"/>

4. 低版本系统兼容

如果你的应用最低支持版本低于17763,在App.xaml或页面资源中添加回退样式即可:

<Style x:Key="BodyTextBlockStyle" TargetType="TextBlock" BasedOn="{StaticResource DefaultTextBlockStyle}">
    <Setter Property="FontSize" Value="14" />
    <Setter Property="FontWeight" Value="Normal" />
    <Setter Property="LineHeight" Value="20" />
</Style>
<Style x:Key="BodyStrongTextBlockStyle" TargetType="TextBlock" BasedOn="{StaticResource DefaultTextBlockStyle}">
    <Setter Property="FontSize" Value="14" />
    <Setter Property="FontWeight" Value="SemiBold" />
    <Setter Property="LineHeight" Value="20" />
</Style>

排查技巧

如果XAML设计器中就提示找不到对应样式资源,说明版本或资源引用配置错误,无需运行即可定位问题。


内容的提问来源于stack exchange,提问作者rsp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 16:06:08