Xaml 使发送的对象在xamarin.cs文件中可用

Xaml 使发送的对象在xamarin.cs文件中可用,xaml,xamarin,xamarin.forms,Xaml,Xamarin,Xamarin.forms,我有一个新闻列表,当单击新闻时,它会将用户发送到一个包含特定新闻项的新页面 在NewsItem页面上,我想操作发送的对象,以便更改此对象中的值 我的ItemTappedEvent看起来像这样 public void goToEvent(object sender, ItemTappedEventArgs e) { if (e.Item == null) { return; } var selecte

我有一个新闻列表,当单击新闻时,它会将用户发送到一个包含特定新闻项的新页面

在NewsItem页面上,我想操作发送的对象,以便更改此对象中的值

我的ItemTappedEvent看起来像这样

public void goToEvent(object sender, ItemTappedEventArgs e)
    {
        if (e.Item == null)
        {
            return;
        }

        var selectedItem = e.Item; // model
        Navigation.PushAsync(new eventItem(selectedItem)); // pass the selected whole item from list to DetaiPage 'selectedItem' using constructor
        ((ListView)sender).SelectedItem = null;

    }
我的NewsItem页面将其作为c#对象处理,如下所示

public eventItem(object selectedItem)
    {

        this.BindingContext = selectedItem;
        InitializeComponent();

    }
在我的“selectedItem”中有一个名为“product\u”的值 如果该值为“true” 我不想把它改成“Ja”。如何转换我的对象“selectedItem”,使之成为可能


提前谢谢

您需要将对象强制转换为类,如:

var mySelectedItem = selectedItem as myClass

之后,您可以访问myClass中可用的属性/字段。显然,如果这些是
私有的
,您需要将它们设置为公共的。

我想创建一个ValueConverter是有意义的。你考虑过了吗?在父页面中,我可以通过循环完成很多工作:)我想知道是否有一种方法可以让它成为一个可循环的对象啊,我以为你想在数据绑定列表中看到这个,我错了。但是,如果你想认真对待MVVM,我会说将“true”转换为“ja”纯粹是一种视觉上的东西。因此,您只需按原样设置
BindingContext
,并使用值转换器。但是,对于您的问题,您根本没有点击
eventItem
方法?如何调用它?对象不支持foreach迭代器,因此您的示例中存在一些错误。另外,如果我们假设selectedItem是soem IENumerable,那么您仍然不能拥有SelecteTItem[item]。回答时需要考虑太多语法错误。这是我发送对象的方式,但它已经是我自己的一个名为RootObejct2的类,如果我记录我的对象,则输出为:“ODEON.Models.RootObject2”确定我首先删除了,因为示例中有太多语法错误,我不确定这是否是个问题。然而,根据你的评论,是的,这就是问题所在。由于该类未声明为对象以外的任何对象,因此无法访问其属性。