如何沟通OpenFileDialog结果" FilePath"从视图到模型?

时间:2013-04-30 14:43:10

标签: wpf mvvm mvvm-light

我试图通过按下视图上的按钮打开文件对话框,并查看调用viewmodel中定义的命令“OpenFileDialog”。该方法发送消息以查看以打开“Microsoft.Win32.OpenFileDialog()”,现在我想将OpenFileDialog的结果传递给ViewModel。

视图模型

 public ICommand OpenFileCommand {
  get { return new RelayCommand( ( ) => OpenFileCommandExecute( ), ( ) => true ); }
}

private void OpenFileCommandExecute( ) {
  Messenger.Default.Send( "OpenfileDialog" );
}

查看

 Messenger.Default.Register( this, "OpenFileDialog", openFileDialog) ;
 private void openFileDialog(  ) {
  OpenFileDialog OFP = new OpenFileDialog( );
  var kk = OFP.ShowDialog( );      
 }

我想将选定的文件路径传达给视图模型。我正在使用MVVM Light Toolkit和WPF。我的代码没有工作状态。

1 个答案:

答案 0 :(得分:0)

OpenFileDialog应该有一个Filename属性,您可以在ShowDialog()方法之后检查它。

示例

OpenFileDialog openDialog = new OpenFileDialog();
openDialog.ShowDialog();
if (string.IsNullOrEmpty(openDialog.Filename)) return;

string path = openDialog.Filename;

然后,如果您希望它可以在视图模型上访问,只需为ViewModel类中的路径创建自己的属性,并使用Filename属性填充它。