2013-05-03 51 views
2

下面是我的代碼片段。OpenFileDialog.ShowDialog()在Silverlight中引發InvalidOperationException

OpenFileDialog dialog = new OpenFileDialog() 
{ 
    Filter = "Excel Files (*.xlsx;*.xls;)|*.xlsx;*.xls;", 
}; 

if (dialog.ShowDialog().Value == false) 
{ 
    IsCommiting = false; 
    return; 
} 
else 
{ 
    Items.Clear(); 
} 

當調用dialog.ShowDialog()時,InvalidOperationException與此消息引發「ShowDialog失敗。」。

我已經通過谷歌搜索找到相關文章。 http://social.msdn.microsoft.com/Forums/en-US/silverlightmvvm/thread/6ae9454b-b5ba-4286-959f-6dc4d347ebf7/

這篇文章是關於打開文件對話框中的多選。但是我沒有將Multiselect屬性設置爲True。這個問題不會經常發生,並且不能被複制。

有沒有人遇到同樣的問題?

回答

1

你可以嘗試:

OpenFileDialog dialog = new OpenFileDialog() 
{  
    Filter = "Excel Files (*.xlsx,*.xls)|*.xlsx,*.xls" 
}; 

if (dialog.ShowDialog() == false) 
{ 
    IsCommiting = false; 
    return; 
} 
else 
{ 
    Items.Clear(); 
} 
+0

OpenFileDialog.ShowDialog()返回可空。如果返回值不爲null,則此代碼與我的代碼相同。我認爲這不是解決方案。或者你能給我更多的解釋嗎? – jyshin 2013-05-03 06:11:17

+0

您的代碼是否在點擊按鈕內? – Xelom 2013-05-03 06:16:18

+0

它使用命令綁定,而不是事件。 – jyshin 2013-05-03 06:25:01

0

雖然聽起來有點奇怪 - 因爲打開文件對話框實際上是打開資源管理器窗口(它執行的外殼擴展),你有沒有考慮,禁用所有外殼擴展的ShellExView

0

嘗試以下操作:

if (dialog.ShowDialog() != DialogResult.OK) 
相關問題