【发布时间】:2017-11-15 06:03:12
【问题描述】:
我正在尝试使用 MvxDialogFragment 来显示活动中的数据绑定对话框。我的 Dialog ViewModel 如下:
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 现在有办法让它工作吗?像自定义演示者或类似的东西?我已经到处搜索了 MvxDialogFragment 的工作示例,但一直找不到。
-
@Martijn00 谢谢兄弟。我查看了链接,其中大部分内容可能超出了我的能力范围,但如果有帮助的话,我也许可以测试其中的一些内容。如果有什么我可以贡献的,请告诉我。
-
@Martijn00 我已经安装了 5.4 版。有没有办法做到这一点?你能给我举个例子吗?
标签: c# android xamarin.android mvvmcross