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