私はWindowsPhone7を作成していて、MVVMを使用してそれを実行しようとしています。ビューモデルをできるだけきれいに保ちたいのですが、ダイアログボックスの作成方法がわかりません。私はMVVMライトを使用していますが、メッセージングシステムなどがあることは知っていますが、使用方法がよくわかりません。
Guide.BeginShowMessageBox
これは標準のダイアログボックスよりも多くの機能を提供するように思われるので、使用したいと思い ます。
MVVMパターンを壊さずにこれを行うにはどうすればよいですか。ビューをロードするときに、ロードされたトリガーをトリガーして、いくつかの条件を確認したいと思います。条件が満たされた場合は、ダイアログを表示します。
// Vm
public RelayCommand MainPageLoaded
{
get
{
if (!NetworkInterface.GetIsNetworkAvailable())
{
// breaks MVVM now as have view code in viewmodel. Need to take out somehow
Guide.BeginShowMessageBox("Test", "Test network", new List<string>() { "Yes", "No" }, 0, MessageBoxIcon.Warning, asyncResult =>
{
int? returned = Guide.EndShowMessageBox(asyncResult);
// if yes then work offline mode? Maybe another property in ViewModel will get set to say offline mode?
}, null);
}
return null;
}
set
{
// Not sure what to put here.
}
}
// 意見
<i:Interaction.Triggers>
<i:EventTrigger>
<GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding MainPageLoaded}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
編集 私が抱えている別の問題はです。このプロパティに保存されているいくつかのデータにバインドされているリストがあります
public ObservableCollection<ContactGroup> ContactGroups { get; set; }
次に、タップすると、トリガーされるリレーコマンドがあります
public ICommand GroupContactTapped
{
get
{
return new RelayCommand<GestureEventArgs>(e =>
{
var selectedTextBlock = e.OriginalSource as TextBlock;
MessageBox.Show(selectedTextBlock.Tag.ToString());
});
}
}
しかし、ソースをテキストブロックにキャストせずに、どのオブジェクトが「タップ」されたかを見つける方法がわかりません。