2012-10-10 37 views
0

我正在開發一個WPF應用程序,我剛剛遇到加載腳本文件(.xml)操作,我應該從系統加載它,從組合框中獲取文件並調用Load方法。無法通過FileOpenDialog在WPF中加載腳本文件

的XAML:

<ComboBox Name="ScriptCombo" SelectedIndex="0" > 
     <ComboBoxItem Content="Select Aardvark Script" /> 
     <ComboBoxItem Content="{Binding ScriptPath}" /> 
</ComboBox> 

<Button Content="..." Command="{Binding Path=ScriptPathCommand}" Name="ScriptFileDialog" /> 

視圖模型:

private string _ScriptPath; 
public string ScriptPath 
{ 
    get { return _ScriptPath; } 
    set 
    { 
     _ScriptPath = value; 
     NotifyPropertyChanged("ScriptPath"); 
    } 
} 

// Method gets called when ... Button is clicked 
private void ExecuteScriptFileDialog() 
{ 
    var dialog = new OpenFileDialog { InitialDirectory = _defaultPath }; 
    dialog.DefaultExt = ".xml"; 
    dialog.Filter = "XML Files (*.xml)|*.xml"; 
    dialog.ShowDialog(); 
    ScriptPath = dialog.FileName; //Stores the FileName in ScriptPath 
} 

這將打開一個文件對話框,讓我選擇一個.xml文件。在對話框打開時,它並不會顯示CurrentWorkingDirectory。如何才能實現?因此,選擇當我單擊打開並在ScriptPath statemnt附近放置斷點時,它會顯示我的組合框中文件的路徑。

另外我想獲取此文件並將其存儲在FILE類型中,因此調用LoadFile方法。我這樣做是在C++如下:

File file = m_selectScript->getCurrentFile(); //m_selectScript is combobox name 
if(file.exists()) 
{ 
LoadAardvarkScript(file); 
} 

void LoadAardvarkScript(File file) 
{ 
} 

在WPF我不喜歡:

ScriptPath = dialog.FileName; 
if (File.Exists(ScriptPath)) 
{ 
    LoadAardvarkScript(ScriptPath); 
} 
} 

public void LoadAardvarkScript(string ScriptPath) 
{ 
    MessageBox.Show("Start Reading File"); 
} 

我傳遞FILE在C++ perameter代碼,並在這裏我傳遞一個字符串。它會在讀取XML文件時產生任何問題嗎?

回答

1

我不完全明白你的問題是什麼,但最初由OpenFileDialog顯示的目錄是由它的InitialDirectory屬性設置的,因此你已經把它放到你的defaultPath變量中。例如,這可能是System.Environment.CurrentDirectory屬性的值。

對於問題的第二部分,在.Net中有一個File類。

+0

謝謝:)我的第一個問題已被清除。對於第二個問題,請檢查我的更新代碼。這樣對嗎? – StonedJesus

+0

我不知道,因爲我不知道'LoadAardvarkScript'應該做什麼。當然可以從其路徑中打開文件,然後處理其XML內容。 – Clemens

+0

基本上'LoadAardvarkScript'方法分析XML文件並提取存儲在xml腳本中的標記名。那麼我現在會試試看看操作是否順利或不正確:)我正在標記這個答案是正確的,並會upvote太:)如果我面臨任何問題,生病下降評論。希望你能與我聯繫:) – StonedJesus