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

Xamarin 5 UWP平台调用DisplayAlert点击按钮触发未处理异常求助

问题根因
  • Xamarin.Forms 5.x的UWP平台渲染层,DisplayAlert对应的原生实现为UWP的ContentDialog控件,默认复用了Microsoft.UI.Xaml(WinUI 2.x)库提供的AnimatedIcon相关样式定义
  • 异常触发的核心原因是UWP项目运行时无法解析AnimatedIcon的附加属性,通常是两个问题导致:一是显式安装的Microsoft.UI.Xaml版本和XF5依赖的版本不匹配,二是UWP项目的App.xaml未正确合并WinUI的主题资源字典,样式解析时找不到对应属性定义,点击按钮触发状态变更时就会抛出未处理异常
解决方案

按优先级依次尝试以下操作即可解决:

  1. 统一Microsoft.UI.Xaml版本
    确认UWP项目安装的Microsoft.UI.Xaml为XF5官方适配的2.8.x版本,禁止安装3.x及以上版本(WinUI 3不兼容UWP),也不要使用低于2.7的旧版本。安装时保证所有关联项目的Nuget版本号完全一致,避免版本冲突。
  2. 手动引入WinUI主题资源
    打开UWP项目的App.xaml文件,在<Application.Resources>节点下合并WinUI的资源字典,示例代码如下:
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
            <!-- 此处保留项目原本的其他合并资源字典配置 -->
        </ResourceDictionary.MergedDictionaries>
        <!-- 此处保留项目原本的其他资源配置 -->
    </ResourceDictionary>
</Application.Resources>
  1. 自定义弹窗渲染器绕开依赖
    如果上述操作后问题仍存在,可在UWP项目中实现自定义Page/Shell渲染器,重写DisplayAlert的原生实现,直接调用UWP原生MessageDialog实现弹窗,该实现不依赖WinUI的AnimatedIcon样式,可完全规避该异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:18:03