特别是 ViewModels 上的 Views 之间的导航看起来像这样:
ShowViewModel<InfoViewModel>();
或在正常活动之间:
context.StartActivity(typeof(InfoActivity));
我现在面临的问题(实际上我在我的一个最新项目中通过使用 Tinymessenger 解决了它 - 它是用于松散耦合通信的事件聚合器/信使)但我想知道是否有其他方法!
我正在创建一个选项菜单:
public abstract class BaseActivityWithoutTabs<T> : MvxActivity where T : class, IMvxViewModel
{
public override bool OnCreateOptionsMenu(IMenu menu)
{
return ActivitiesHelper.CreateOptionsMenu(menu);
}
public override bool OnOptionsItemSelected(IMenuItem item)
{
return ActivitiesHelper.CreateOnOptionsItemSelectedEvent(item, this);
}
}
InfoActivity
源于此BaseActivityWithoutTabs
。
在 ActivitiesHelper 类(来自上面的代码)中,我正在创建菜单和事件:
public class ActivitiesHelper
{
private const int einstellungenItemId = 0;
private const int infoItemId = 1;
public static bool CreateOptionsMenu(IMenu menu)
{
// GroupId, ItemId, OrderId
menu.Add(0, einstellungenItemId, 0, "Einstellungen").SetIcon(Android.Resource.Drawable.IcMenuManage);
menu.Add(0, infoItemId, 1, "Info").SetIcon(Android.Resource.Drawable.IcMenuInfoDetails);
return true;
}
public static bool CreateOnOptionsItemSelectedEvent(IMenuItem item, Context context)
{
var id = item.ItemId + 1; // (Id is zero-based :)
if (id == 1) // First Item
{
context.StartActivity(typeof(SettingsShowActivity));
}
else if (id == 2) // Second Item
{
context.StartActivity(typeof(InfoActivity)); //doesn't work...
}
return true;
}
}
如您所见,我在这里“ StartActivity
”..它适用于第一个“ SettingsShowActivity
”,但那是PreferenceActivity,因此没有理由失败。问题是,我想从这里开始InfoActivity
(如您在代码中看到的 - 第二项),但这不起作用。它打开了活动,但列表没有被填满。
但是,如果我在我的项目中转到 ViewModel 并调用:ShowViewModel<InfoViewModel>();
它工作正常,但这是在那个地方(在 ActivitiesHelper 类中)不可用/可能!
public class InfoViewModel : MvxViewModel
{
public InfoViewModel()
{
Info info = new Info();
info.Key = "ITS A KEYY";
info.Value = "here we got a value";
ObservableCollection<Info> asd = new ObservableCollection<Info>();
asd.Add(info);
Infos = asd;
}
private ObservableCollection<Info> infos = new ObservableCollection<Info>();
public ObservableCollection<Info> Infos
{
get
{
return infos;
}
set
{
infos = value;
RaisePropertyChanged(() => Infos);
}
}
}
有什么建议么?