绑定问题!将一页绑定到多页
Posted
技术标签:
【中文标题】绑定问题!将一页绑定到多页【英文标题】:Bindig problems! Bind one page to multiple pages 【发布时间】:2021-11-03 17:30:52 【问题描述】:伙计们,假设您有 page1.xaml 和 page1.cs,并且此 page1.cs 中有一个类(学校)您想在 page2.xaml 中用作绑定对象。我可以在page2的xaml页面中做到这一点,
1.但是如何在page2.cs中做到这一点?
2.我不想使用 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 保存这个 energyx:
energyX = new ObservableCollection<EnergyX>(conn.Table<EnergyX>().ToList());
在我的 page2.xaml 中:
<listview binding energyx/>
<lable binding Score/>
【问题讨论】:
您能否更新您的问题并提供更多信息?你想在页面之间传递对象吗?此外,课程应该在您的页面之外。 是的。我做到了。 【参考方案1】:您可以将您的视图模型定义为单例,然后您可以将其绑定到多个页面中。
喜欢:
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>
【讨论】:
感谢您的回答,但我也想在 page2 中使用其他视图模型。 @BehzadChangizi 一个简单的方法是将 viewModel 定义为 Page2 的一个属性,如上所述。 @leo-zhu-msft 非常感谢,你只是告诉我我的错误。我在第 1 页中使用了 Sqlite 来保存更新的模型。我没有使用 sql 服务模型或...我将所有 SQL 放在我的第 1 页中。兄弟,如果我按原样使用我的代码,我可以使用:public class YourViewModel 并创建一个 energyx 实例,或者我应该再次编写我的整个 page1 代码.以上是关于绑定问题!将一页绑定到多页的主要内容,如果未能解决你的问题,请参考以下文章
如何将一系列日期绑定值映射/减少到 JavaScript / RXJS 中的运行总数?
DataReader 或 DataTable 绑定Repeater?