作为整体示例,请考虑以下类:

public class Book
{
    public string Title { get; set; }
    public string Author { get; set; }
    public int PageCount { get; set; }
}

还有这个:

public class Bookshelf
{
    public List<Book> Books { get; set; }
}

如果我用3个Book类型的对象填充我的Bookshelf,并将Bookshelf放在CollectionView中,我可以在我的ViewModel中有一些代码,当一本书在CollectionView中被点击时,它处理Click事件.

它可能是这样的:

[RelayCommand]
async Task BookClicked()
{
    try
    {
        var navigationParameter = new Dictionary<string, object>
        {
            { "Book", book }
        };
        await Shell.Current.GoToAsync($"{nameof(BookPage)}", navigationParameter);
    }
    catch (Exception ex)
    {
        Debug.WriteLine(ex.Message);
    }
}

一百零二

推荐答案

您可以使用查询属性属性来获取导航数据.

可以通过 for each 基于字符串的查询参数和基于对象的导航参数用QueryPropertyAttribute修饰接收类来接收导航数据.

请参考以下代码:

[QueryProperty(nameof(Bear), "Bear")]
public partial class BearDetailPage : ContentPage
{
    Animal bear;
    public Animal Bear
    {
        get => bear;
        set
        {
            bear = value;
            OnPropertyChanged();
        }
    }

    public BearDetailPage()
    {
        InitializeComponent();
        BindingContext = this;
    }
}

更多信息,请查看官方文件:Process navigation data using query property attributes.

当然,您也可以使用单一方法获取导航数据.

更多信息,请查看文档:Process navigation data using a single method.

Csharp相关问答推荐

在实际上是List T的 IESEARCH上多次调用First()是否不好?

错误401未授权ASP.NET Core.使用JWT创建身份验证/授权

如何在NServicebus中配置学习传输的文件夹(NService bus 8)

以自动方式注销Azure身份应用程序

为什么EF Core 6会针对null验证Count(*)?

C#EF Core 8.0表现与预期不符

发布用于Linux Ubuntu的C#应用程序

ASP.NET核心REST API返回一个非常大的数字

从ASP.NET Core中的枚举字段填充 Select 选项时,将默认的第一个选项添加为 Select 元素

尽管保证密钥不同,但已添加相同密钥的项(&Q;)

如何使用C#获取FireStore中的列表输出文档

为具有实体框架后端的Reaction项目 Select 正确的Visual Studio模板

由于POST中的应用程序/JWT,出现不支持的内容类型异常

单元测试:模拟返回空

如何在我的C#应用程序中设置带有reactjs前端的SignalR服务器?

为什么方法的值在SELECT方法中不会更改?

C#LINQ子字符串

获取混淆&Quot;模糊引用&Quot;错误

C# Winforms:从对象树到TreeView的递归转换重复条目

使用ITfoxtec.Identity.Saml2解析相同键多值SAML 2声明