我正在使用MvvmCross开发Xamarin.Android应用程序,并且试图将存储的数据从主要活动Viewmodel获取到Fragment Viewmodel中。
这就是我所拥有的。
我正在使用
因此,我正在尝试从ActivityViewModel对象访问FragmentAViewModel.SomeProperty。
有可能吗?
我正在使用IMvxMessenger作为一种变通方法,以“发送”带有我要访问的属性内容的通知到ActivityViewModel。
还有其他方法可以实现吗?
谢谢。
答案 0 :(得分:0)
一种选择是使用依赖项注入系统来创建一个单例,该单例可用作视图模型之间的共享上下文。
示例
public interface ISharedContext
{
string Name { get; set; }
}
public class SharedContext : MvxNotifyPropertyChanged, ISharedContext
{
string _name;
public string Name
{
get { return _name; }
set { SetProperty(ref _name, value); }
}
}
在您的App类中注册SharedContext
Mvx.LazyConstructAndRegisterSingleton<ISharedContext, SharedContext>();
在视图模型中的用法。然后,您可以直接绑定到SharedContext
或为其属性分配并在不同的视图模型中使用。
public class FragmentAViewModel : MvxViewModel
{
public ISharedShoppingCart SharedContext { get; }
public FragmentAViewModel(ISharedContext sharedContext)
{
SharedContext = sharedContext;
}
}
public class ActivityViewModel : MvxViewModel
{
public ISharedShoppingCart SharedContext { get; }
public ActivityViewModel(ISharedContext sharedContext)
{
SharedContext = sharedContext;
}
}