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

.NET MAUI 8中如何将ItemsViewScrolledEventArgs传入ViewModel函数

在.NET MAUI中传递CollectionView Scrolled事件的ItemsViewScrolledEventArgs到ViewModel

解决方案

利用MAUI Community Toolkit的EventToCommandBehavior自带的参数传递能力,无需复杂的附加属性,就能直接把事件参数传给ViewModel的命令。

步骤1:ViewModel中定义接收参数的RelayCommand

基于CommunityToolkit.Mvvm库的RelayCommand,定义带ItemsViewScrolledEventArgs参数的处理方法:

using CommunityToolkit.Mvvm.Input;
using Microsoft.Maui.Controls;

public class YourViewModel : ObservableObject
{
    [RelayCommand]
    public void OnScrolled(ItemsViewScrolledEventArgs e)
    {
        // 直接获取核心属性LastVisibleItemIndex
        int lastVisibleIndex = e.LastVisibleItemIndex;
        // 编写你的业务逻辑代码
    }
}

步骤2:修改XAML中的EventToCommandBehavior配置

删除手动填写的CommandParameter,添加PassEventArguments="True"属性,让行为自动传递事件触发时的参数:

<!-- 确保已引入toolkit命名空间 -->
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
             x:Class="YourProjectNamespace.YourPage">

    <CollectionView ItemsSource="{Binding YourDataSource}">
        <CollectionView.Behaviors>
            <toolkit:EventToCommandBehavior
                EventName="Scrolled"
                Command="{Binding OnScrolledCommand}"
                PassEventArguments="True" />
        </CollectionView.Behaviors>

        <!-- 此处配置CollectionView的ItemTemplate等内容 -->
    </CollectionView>
</ContentPage>

必要前提

  • 已安装CommunityToolkit.Maui NuGet包,并在MauiProgram.cs中初始化:
builder.UseMauiApp<App>().UseMauiCommunityToolkit();
  • RelayCommand会自动生成对应命令属性(如示例中的OnScrolledCommand),需与XAML绑定的命令名称保持一致。

内容的提问来源于stack exchange,提问作者Mateusz Rosiński

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 19:18:15