我正在尝试使用MvxDialogFragment来显示活动的数据绑定对话框。我的对话视图模型如下:什么是显示MvxDialogFragment的简单方法?
public class ContainerDialogViewModel : MvxViewModel
{
public string ShipperName;
public void Init(string Name)
{
ShipperName = Name;
LoadData();
}
public void LoadData()
{
Survey = SurveyDataSource.CurrSurvey;
}
private ShipmentSurvey _Survey;
public ShipmentSurvey Survey
{
get
{
return _Survey;
}
set
{
_Survey = value;
RaisePropertyChanged(() => Survey);
RaisePropertyChanged(() => Containers);
}
}
public List<ShipmentSurveyContainer> Containers
{
get
{
if (Survey == null)
return new List<ShipmentSurveyContainer>();
else
return Survey.SurveyContainers.ToList();
}
}
}
的MvxDialogFragment编码如下:
public class ContainerDialog : MvxDialogFragment<ContainerDialogViewModel>
{
public override Dialog OnCreateDialog(Bundle savedState)
{
base.EnsureBindingContextSet(savedState);
this.BindingInflate(Resource.Layout.ContainerDialog, null);
return base.OnCreateDialog(savedState);
}
}
在我的活动,我想弄清楚启动对话的最简单方法。这是我曾尝试:
public class SurveyView : MvxActivity
{
public void ShowContainerDialog()
{
ContainerDialogViewModel vm = new ViewModels.ContainerDialogViewModel();
vm.Init("Test Name");
var dialogFragment = new ContainerDialog()
{
DataContext = vm
};
dialogFragment.Show(FragmentManager, "Containers");
}
}
我敢肯定,我创建视图模型的方法是非正统的,但我不知道另一种方式来做到这一点。最大的问题是FragmentManager被转换为错误的版本。 Show正在寻找一个Android.Support.V4.App.FragmentManager,并且暴露的FragmentManager是一个Android.App.FragmentManager。我尝试将MvxActivity更改为MvxFragmentActivity,但这似乎没有帮助。有人能指引我朝着正确的方向吗?
支持对话框的新主持人计划在5.1.0 – Martijn00
@ Martijn00有没有办法让它现在工作?像一个自定义的演示者或类似的东西?我搜索了一个MvxDialogFragment的工作示例的高低,并且找不到一个。 –
我正在处理此问题:https://github.com/MvvmCross/MvvmCross/issues/1934 – Martijn00