绑定问题!将一页绑定到多个页面
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>
伙计们假设你有 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>