J'essaie d'utiliser un MvxDialogFragment pour afficher une boîte de dialogue liée aux données d'une activité. Mon dialogue ViewModel est la suivante:Qu'est-ce qu'un moyen simple d'afficher un 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();
}
}
}
Le MvxDialogFragment est codé comme suit:
public class ContainerDialog : MvxDialogFragment<ContainerDialogViewModel>
{
public override Dialog OnCreateDialog(Bundle savedState)
{
base.EnsureBindingContextSet(savedState);
this.BindingInflate(Resource.Layout.ContainerDialog, null);
return base.OnCreateDialog(savedState);
}
}
Dans mon activité, je suis en train de trouver la façon la plus simple de lancer la boîte de dialogue. Voici ce que j'ai essayé:
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");
}
}
Je suis assez sûr que ma méthode de création du modèle de vue est peu orthodoxe, mais je ne sais pas une autre façon de le faire. Le plus gros problème est que FragmentManager est casté à la mauvaise version. Show recherche un Android.Support.V4.App.FragmentManager et le FragmentManager exposé est un Android.App.FragmentManager. J'ai essayé de changer le MvxActivity en MvxFragmentActivity, mais cela n'a pas semblé aider. Quelqu'un peut me diriger dans la bonne direction?
Un nouveau présentateur avec prise en charge des boîtes de dialogue est prévu pour 5.1.0 – Martijn00
@ Martijn00 Existe-t-il un moyen de le faire fonctionner maintenant? Comme avec un présentateur personnalisé ou quelque chose comme ça? J'ai recherché haut et bas pour un exemple de travail d'un MvxDialogFragment et n'ai pas pu trouver un. –
Je travaille sur ce sujet: https://github.com/MvvmCross/MvvmCross/issues/1934 – Martijn00