2013-04-30 34 views
1

我試圖通過按下視圖上的按鈕打開文件對話框並查看調用viewmodel中定義的命令「OpenFileDialog」。該方法發送消息來查看以打開「Microsoft.Win32.OpenFileDialog()」,現在我想將OpenFileDialog的結果傳遞給ViewModel。如何溝通OpenFileDialog結果「FilePath」從視圖模型?

視圖模型

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。我的代碼不在工作狀態。

回答

0

OpenFileDialog應該有一個Filename屬性,您可以在ShowDialog()方法之後檢查該屬性。

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

string path = openDialog.Filename; 

然後,如果你想要訪問的視圖模型只是創建您自己的財產在ViewModel類的路徑與文件名屬性填充它。

+0

我想知道,如何在ViewModel中填充FileName屬性而無需傳遞消息? – User1551892 2013-05-02 07:35:13