У меня есть небольшой пример github repo , в котором мне нравится открывать пользовательский ContentDialog (SpeechDialog) после нажатия кнопки, используя MVVMCross framework .
Если я реализую ContentDialog с MVVM без каркаса , MainView будет выглядеть так:
public sealed partial class MainView : Page
{
public MainView()
{
this.InitializeComponent();
ISpeechDialogService dialog = new SpeechDialogService();
MainViewModel= new MainViewModel(dialog);
}
public MainViewModel MainViewModel{ get; set; }
}
Но в MVVMCross У меня есть атрибутированный MainView, и я не знаю, как передать ContentDialog:
[MvxViewFor(typeof(MainViewModel))]
public sealed partial class MainView : MvxWindowsPage
{
public MainView()
{
InitializeComponent();
}
}
Некоторый код для лучшего понимания:
SpeechDialogService.cs:
public class SpeechDialogService : ISpeechDialogService
{
public async Task ShowAsync()
{
var contentDialog = new Speech();
await contentDialog.ShowAsync();
}
}
прямая ссылка на Speech.xaml
TL; DR
Правильно ли подходит мой подход? Если да, как я могу передать ContentDialog в MainViewModel? Если нет, как реализовать ContentDialog с MVVMCross ?