我试图通过在 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/