UWP を作成し、テンプレート 10 を使用しています。
ViewModel で計算されたばかりのデータをユーザーに表示する ModalDialog を作成しました。
これが私が迷っているところです:
#1、ModalDialog は ViewModel からのデータを必要とします。#2、ModalDialog は、ユーザーがクリックするボタンに応じて、ViewModel で 1 つ以上のメソッドを呼び出す必要があります。
私のShell.xaml.cs:
public sealed partial class Shell : Page
{
public static Shell Instance { get; set; }
public static HamburgerMenu HamburgerMenu => Instance.MyHamburgerMenu;
public Shell()
{
Instance = this;
InitializeComponent();
if (App.MobileService.CurrentUser == null)
LoginModal.IsModal = true;
}
public Shell(INavigationService navigationService) : this()
{
SetNavigationService(navigationService);
}
public void SetNavigationService(INavigationService navigationService)
{
MyHamburgerMenu.NavigationService = navigationService;
}
#region Login
private void LoginLoggedIn(object sender, EventArgs e)
{
MyHamburgerMenu.NavigationService.Navigate(typeof(Views.MainPage));
LoginModal.IsModal = false;
}
#endregion
}
}
Shell.xaml
<Controls:ModalDialog x:Name="ScoreModal" Grid.RowSpan="3"
CanBackButtonDismiss="False"
DisableBackButtonWhenModal="True">
<Controls:ModalDialog.ModalContent>
<myControls:QuizScorePart
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
</Controls:ModalDialog.ModalContent>
</Controls:ModalDialog>
私が試したこと:
ModalDialog のコントロールを、話したい ViewwModel を使用するビューに配置しようとしましたが、うまくいきません。そのビューはシェル内に存在します。つまり、ModalDialog の下にあるものはすべて無効になっていません。私が知っていることから、それはシェルにある必要があります。
ダイアログの IsModal を true/false に設定するメソッドを Shell.xaml.cs ファイルに設定しようとしました。これは機能しますが、ViewModel とのやり取りの問題は解決しません。
道に迷いました。助けてくれてありがとう。