私はMVVMパターンを実装するためにPrism 6.1を使用しています。通知/確認ダイアログでは、msdnのプリズムライブラリページを使用した高度なMVVMシナリオについて詳しく説明したInteractionRequestとInteractionRequestを使用しています。私の質問は、私がMVVM内でOpenFileDialogを使う方法です。 Prismは、SaveダイアログとOpenダイアログで同様の機能を提供していません。 View & ViewModelに組み込むべきコードの例を教えてください。ありがとうございました。Prism MVVMを使用したOpenFileDialog
3
A
答えて
5
あなたは単にダイアログサービスを作成する必要があります。
public interface IDialogService
{
void Show();
}
public class DialogService : IDialogService
{
public void Show()
{
//logic to show your dialogs
}
}
あなたのコンテナに登録していることを確認してください:
Conatiner.Register<IDialogService, DialogService>(do you want a singletone?);
が次にいつでも好きなときに今それを呼び出すあなたのctor
public ViewAViewModel(IDialogService ds) { ... }
にそれを求めます。
0
1つは、専用のTriggerActionを使用します。
public class SelectFileAction : TriggerAction<FrameworkElement>
{
protected override void Invoke(object parameter)
{
ISelectFilePayload payload = notification.Content as ISelectFilePayload;
// Configure the open file dialog
Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
dlg.Filter = payload.Filter;
// Show the dialog
Nullable<bool> result = dlg.ShowDialog();
// Process dialog result
if (result == true)
{
// Return the name of the selected file in the payload
payload.Path = dlg.FileName;
// The Callback property, if set, contains the invoker's callback method
var callback = args.Callback;
// Call the invoker's callback if any
if (callback != null)
{
callback();
}
}
}
}
関連する問題
- 1. Silverlight MVVM PrismとOpenFileDialog
- 2. WPF、MVVM、およびPrismを使用したアプリケーションのビルド
- 3. Prism、MVVM、Unityを使用した切り替えナビゲーションの表示
- 4. MVVM Light + UnityまたはPrism?
- 5. ViewModelLocator in prism mvvm
- 6. Silverlight MVVM vs Prism
- 7. MVVM、Prism and Service Discovery
- 8. PrismとMVVM Light Toolkit
- 9. WPF MVVM Light MessengerとPrism EventAggregator
- 10. Prism(MVVM)でWindows.Devices.Enumeration.DevicePickerを使用する方法?
- 11. MEFとMVVMを使用してツールバーにPRISMモジュールを追加する方法
- 12. Silverlight 3 Prismを使用した検証
- 13. WPF PRISM 4を使用したグレースフルアプリケーションシャットダウン4
- 14. MVVMを使用したExtJS
- 15. mvvmを使用したバインディングチャートプロッタ
- 16. MediaPluginを使用したXamarin Forms MVVM(Prism) - デバイスストレージから撮影した画像を取得する方法
- 17. PrismはMVVM開発に適した製品ですか?
- 18. MVVM複数のビューPrismの同じViewModel
- 19. WPFでの親子ViewModel通信 - Prism MVVM
- 20. MVVMとPrismのハイパーリンクの可視性
- 21. MVVM-Helpers検証属性を使用したWPF MVVM検証の問題
- 22. OpenFileDialogでDialogResult.OKを使用中にエラーが発生しました
- 23. Swiftを使用したMVVMを使用したUITableView
- 24. InitialDirectoryとしての相対パスを使用したOpenFileDialogの使用
- 25. フレームとCombobox MVVMを使用したナビゲーション
- 26. Mvvmヘルパーを使用したデータバインド
- 27. MVVM +コーディネータを使用したUIViewControllerトランジション
- 28. サービスロケータを使用したMVVMモーダルダイアログ
- 29. MVVMを使用したWPFの足場?
- 30. WPF Usercontrol MVVMを使用したデータバインディングViewModel
こんにちはブライアン、私は大きなファンです! VMとmsgを交換するためにビューにコードを入力する必要はありますか? VMのNotificationRequestプロパティにバインドされている(View内の)InteractionRequestTriggerのようなもの?私はいつもダイアログサービスと一緒にメディエーターパターンを使用する必要がありますか?ありがとう。 – sophon234
あなたは何を意味するのか分かりません。サービスを使用してダイアログを表示したい場合は、Commandを公開し、ExecuteでdialogService.Showを呼び出します。 –
私が間違っている場合は、私を修正してください。すべてのメッセージとダイアログボックスはUIレイヤーで処理する必要があると私は考えましたか?例えば、VMがメッセージボックスを表示する必要がある場合、UIレイヤー(View)でInteractionRequestTriggerをトリガーするイベント(VMから)を発生させるだけです。しかし、VMから開いたダイアログボックスを表示する必要がある場合は、VMからdialogService.Show()を呼び出します。つまり、ここでVMとVIEWとの間に対話がない場合、VMはサービスを使用して開いているダイアログボックスを表示します。ありがとう。 – sophon234