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

.NET MAUI中RelayCommand接收WebView Navigated参数为空问题排查

.NET MAUI WebView Navigated事件参数传递为null问题解决

问题根源

.NET MAUI SDK 6.0.486 对事件参数的传递逻辑进行了调整,而你使用的 CommunityToolkit.Maui 1.2.0 未适配该更新,同时EventToCommandBehavior默认未显式开启参数传递。

解决步骤

1. 显式开启参数传递

修改XAML中的EventToCommandBehavior配置,添加PassEventArgsToCommand="True",强制传递事件参数:

<toolkit:EventToCommandBehavior 
    EventName="Navigated" 
    Command="{Binding NavigatedCommand}"
    PassEventArgsToCommand="True" />

2. 修正RelayCommand定义

确保ViewModel中的命令为泛型参数版本,匹配WebNavigatedEventArgs类型,同时建议用async Task替代async void避免异步风险:

// ViewModel内定义命令
public RelayCommand<WebNavigatedEventArgs> NavigatedCommand { get; }

// 构造函数初始化
public YourViewModel()
{
    NavigatedCommand = new RelayCommand<WebNavigatedEventArgs>(Navigated);
}

// 处理方法
async Task Navigated(WebNavigatedEventArgs args)
{
    // 你的业务逻辑
}

3. 升级CommunityToolkit.Maui

CommunityToolkit.Maui 1.2.0 未适配.NET MAUI 6.0.486的参数传递变化,建议升级到1.3.0及以上版本,该版本修复了相关兼容性问题,可通过NuGet直接更新。

临时替代方案

如果上述步骤暂时无法生效,可以跳过EventToCommandBehavior,在页面后台直接绑定事件并手动触发命令:

// 页面后台代码
private void WebView_Navigated(object sender, WebNavigatedEventArgs e)
{
    var viewModel = (YourViewModel)BindingContext;
    viewModel.NavigatedCommand.Execute(e);
}

内容的提问来源于stack exchange,提问作者H.A.H.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:24:14