这是我的问题的流程:
目前,我对以下方面还一无所知:
我正在使用MVVM Light库。
最佳答案
虽然我认为Dmitriy Reznik的回答相当不错,但另一个解决方案是使用按钮的命令来执行ViewModel中的大部分工作。这并不严格遵循MVVM模式,但可能更易于实现。
将按钮上的命令设置为ViewModel上的ICommand。一旦关闭对话框,ICommand将启动SaveFileDialog并将文件写入磁盘。由于您使用的是MVVM Light,因此我将使用RelayCommand来实现ICommand。
Xml:
<Button Command="{Binding SaveAsClickCmd}/>
代码:
public class MyViewModel
{
public RelayCommand SaveAsClickCmd
{
get {
return _saveAsClickCmd ?? (_saveAsClickCmd = new RelayCommand(() => {
var dialog = new Microsoft.Win32.SaveFileDialog();
if (dialog.ShowDialog() != true)
return;
using (var stream = dialog.OpenFile()) {
//write out file to disk
}
}));
}
}
private RelayCommand _saveAsClickCmd;
}
关于c# - 如何将SaveAsDialog的结果传递给RelayCommand?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10077907/