1

我正在尝试通过按下视图上的按钮来打开文件对话框,并调用视图模型中定义的命令“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。我的代码不在工作状态。

4

1 回答 1

0

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

例子

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

string path = openDialog.Filename;

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

于 2013-05-01T01:27:55.690 回答