MAUI导航路由传递参数方法

1 首先注册路由builder.Services.AddSingletonWithShellRoute<NotePage, NotePageViewModel>($“{nameof(NotePage)}”);
注册路由方法2:
在AppShell.xaml.cs文件中 AppShell 构造函数中添加

Routing.RegisterRoute(nameof(NotePage), typeof(NotePage));

2 CollectionView单选传递选中项
当 属性 SelectionMode 设置为 Single时,可以选择 中的 CollectionView 单个项。 选择某个项时, SelectedItem 属性将设置为所选项的值。 当此属性更改时, SelectionChangedCommand 将 (执行 ,并将 的值 SelectionChangedCommandParameter 传递给 ICommand) ,并 SelectionChanged 触发 事件。

3 CollectionView传递选中项,封装参数
ViewPage

 <CollectionView ItemsSource="{Binding Users}" SelectionMode="Single" Grid.Row="1" SelectionChangedCommand="{Binding SelectedUserCommand}"
                        SelectionChangedCommandParameter="{Binding Source={RelativeSource Self}, Path=SelectedItem}" x:Name="usersCollection">

ViewModel

        [RelayCommand]
        private async Task SelectedUser(User user)
        {
            if (user is not null)
            {
                //参数封装
                var parameter = new Dictionary<string, object>()
                {
                    {"load",user }
                };
                //第一个参数路由名称,第二个参数参数内容
                await Shell.Current.GoToAsync($"{nameof(UserPage)}", parameter);
            }
        }

4 接收参数
接收ViewModel需要继承IQueryAttributable接口,然后实现接收参数的方法

        //接收参数实现
        public void ApplyQueryAttributes(IDictionary<string, object> query)
        {

            if (query.ContainsKey("load"))
            {
                Note local = query["load"] as Note;
                _note = local;
                OnRefresh();
            }
            else if (query.ContainsKey("name"))
            {
                var name = query["name"] as string;
                if (name == "new")
                {
                    _note = new Note();
                    OnRefresh();
                }
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值