我正在使用Prism 6.1实现MVVM模式。对于通知/确认对话框,我使用InteractionRequest和InteractionRequest来详细介绍了msdn上的高级MVVM场景使用Prism库页面。我的问题是如何在MVVM中开始使用OpenFileDialog。Prism没有为保存和打开对话框提供类似的功能。您能否给我一个应该在View和ViewModel中合并的代码示例。谢谢。
您只需要创建一个对话服务。
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?);
然后在你的构造函数中请求它。
public ViewAViewModel(IDialogService ds) { ... }
我个人会为此使用专用的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();
}
}
}
}