绑定问题!将一页绑定到多个页面

Bindig problems! Bind one page to multiple pages

伙计们假设你有 page1.xaml 和 page1.cs 并且你想在 page2.xaml 中使用这个 page1.cs 中的 class(学校) ] 作为绑定对象。我可以在第 2 页的 xaml 页中执行此操作,

1.But 如何在 page2.cs 中完成?

2.I 不想使用 BindingContext = page1;因为我想绑定多个页面到这个page2.

我可以在 xaml 页面中使用多重绑定吗?我应该怎么做?

这是我的模特:

public class EnergyX
    {
        [PrimaryKey, AutoIncrement]

        public int Id { get; set; }
        public string Score { get; set; }

    }

并且在我的 page1.cs 中,我使用 SQL 来保存用户输入:

private ObservableCollection<EnergyX> _energyX;
        public ObservableCollection<EnergyX> energyX
        {
            get { return _energyX; }
            set
            {
                _energyX = value;
                OnPropertyChanged("energyX");
            }
        }

用SQL节省能量x:

energyX = new ObservableCollection<EnergyX>(conn.Table<EnergyX>().ToList());

在我的 page2.xaml:

<listview {binding energyx}/>
<lable {binding Score}/>

您可以将视图模型定义为单例,然后将其绑定到多个页面。

喜欢:

public  class YourViewModel
{

    public static YourViewModel viewModel;
    public ObservableCollection<EnergyX> energyX { get; set; } = new ObservableCollection<EnergyX>();

    public static YourViewModel instance()
    {
        if (viewModel == null)
        {
            viewModel = new YourViewModel();
        }
        return viewModel;
    }

    public void Save(List<EnergyX> list)
    {

        foreach (var item in list)
        {
            energyX.Add(item);
        }
    }
}

然后在你的 page1.xaml.cs:

    public Page1()
    {
        InitializeComponent();
        BindingContext = YourViewModel.instance();
    }

    //when you want to save the energyx 
    List<EnergyX> energyx  = xxxx;
    YourViewModel.instance().Save(energyx);

然后在你的 page2.xaml.cs:

    public Page2()
    {
        InitializeComponent();
        BindingContext = YourViewModel.instance();
    }

绑定在page2.xaml:

    <listview {binding energyx}/>
    <lable {binding Score}/>

更新:

public partial class Page2 : ContentPage
{
    public ViewModel1 viewModel1 { get; set; }
    public ViewModel2 viewModel2 { get; set; }
    public Page2()
    {
        InitializeComponent();
        viewModel1 = new ViewModel1();
        viewModel2 = new ViewModel2();
        BindingContext = this;
    }
 }

然后您可以在 xaml:

中绑定两个视图模型
 <Label Text="{Binding viewModel1.Name}"></Label>
 <Label Text="{Binding viewModel2.Id}"></Label>