wpf - 如何从 View 到 View 模型交流OpenFileDialog结果 “FilePath”?

标签 wpf mvvm mvvm-light

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

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。我的代码无法正常工作。

最佳答案

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

示例

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

string path = openDialog.Filename;

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

关于wpf - 如何从 View 到 View 模型交流OpenFileDialog结果 “FilePath”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16302673/

相关文章:

C# WPF 列表框聊天

wpf - 巨大的 WPF 视觉效果的不精确渲染 - 任何解决方案?

c# - 将标签内容绑定(bind)到嵌套类中的值而不是 Datacontext

c# - Visual Studio 2013 无法识别任何内容

c# - WPF 调用控件

c# - 如何使空的 TextBox 垂直拉伸(stretch)?

c# - Xamarin表单选择器设置了所选项目

c# - 更新 ComboBox 选定项

wpf - 在列表框项目源中时绑定(bind)到 View 模型

mvvm - 在本地化 ApplicationBar 的代码中绑定(bind) EventToCommand