Xamarin.forms Xamarin表单-在页面之间传递数据&;意见

Xamarin.forms Xamarin表单-在页面之间传递数据&;意见,xamarin.forms,binding-context,Xamarin.forms,Binding Context,我有一个xamarin表单应用程序。 有两个类包含数据,其中一个页面正在填充数据 问题是:我正在创建一个新的视图,它应该使用来自两个类的数据 我熟悉的唯一方法是将一个类设置为bindingContext,以便在页面之间传递数据,而ONE类可以正常工作,因为显然不可能同时有2个bindingContext 例如: 第一节课(所有的课都在上一页填好了。只需接受他们已经填好) 二等舱 public class Flats : INotifyPropertyChanged {

我有一个xamarin表单应用程序。 有两个类包含数据,其中一个页面正在填充数据

问题是:我正在创建一个新的视图,它应该使用来自两个类的数据

我熟悉的唯一方法是将一个类设置为
bindingContext
,以便在页面之间传递数据,而ONE类可以正常工作,因为显然不可能同时有
2个bindingContext

例如:

第一节课(所有的课都在上一页填好了。只需接受他们已经填好)

二等舱

public class Flats : INotifyPropertyChanged
        {
            public event PropertyChangedEventHandler PropertyChanged;

            private string _num;

            public string Num
            {
                get { return _num; }
                set
                {
                    _num = value;
                    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Num"));
                }
            }
    }
新观点:

public partial class HouseView
    {
        private Flats _flats;
        private Buildings _buildings;
        public HouseView()
        {
            InitializeComponent();
        }

        private void HouseView_OnBindingContextChanged(object sender, EventArgs e)
        {
            var building = BindingContext as Building;
            //var flat = BindingContext as Flat;
            //_flat = flat;
            _building = building;
           var buildingInfo = await Rest.GetHouseInfo(_building.Id, _flat.Num); //function that will return info on a current house;
          // rest code
        }
    }

也许不需要绑定上下文,因为我只是传递参数,而不是在视图中更改它们?我想这个解决方案可能非常简单,我想不出来….

您缺少的是理解ViewModel的概念,以及它与视图的关系。。在这种情况下,您需要的是一个第三类(ViewModel),它可以处理您之前的两个类:

public class HouseViewModel : INotifyPropertyChanged
{
    public Flats Flats { get; set; }
    private Buildings Buildings { get; set; }     
}

另外,使用OnBindingContextChanged也很麻烦,会影响应用程序的性能。。尝试在虚拟机上准备数据,以便视图尽可能少地了解如何获取/处理数据。

我不清楚您的情况。你能举个例子吗?你在哪里使用这些类,你有多少页?根据您实际尝试实现的内容,有多种解决方案。您可以通过构造函数、公共属性、公共方法等将数据传递给类/视图-有很多方法可以实现。现在还不清楚你到底有什么问题。
public class HouseViewModel : INotifyPropertyChanged
{
    public Flats Flats { get; set; }
    private Buildings Buildings { get; set; }     
}