我正在嘗試使用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