.NET MAUI中RelayCommand接收WebView Navigated参数为空问题排查
问题根源
.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.
相关产品推荐
相关产品推荐

