【问题标题】:Failing To Load Script File in WPF via FileOpenDialog无法通过 FileOpenDialog 在 WPF 中加载脚本文件
【发布时间】:2012-10-10 11:07:31
【问题描述】:

我正在开发一个 WPF 应用程序,我刚刚遇到了加载脚本文件(.xml)操作,我应该从系统加载它,从组合框中获取文件并调用加载方法。

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");
}

我在 C++ 代码中将 FILE 作为参数传递,在这里我传递一个字符串。读取 xml 文件时会产生任何问题吗?

【问题讨论】:

    标签: c# .net wpf binding fileopendialog


    【解决方案1】:

    我不完全理解您的问题是什么,但 OpenFileDialog 最初显示的目录是由其 InitialDirectory 属性设置的,因此是您放入 defaultPath 变量的内容。例如,这可能是 System.Environment.CurrentDirectory 属性的值。

    对于您问题的第二部分,.Net 中有一个 File 类。

    【讨论】:

    • 谢谢 :) 我的第一个问题已解决。对于第二个问题,请检查我更新的代码。对吗?
    • 我不知道,因为我不知道LoadAardvarkScript 应该做什么。当然可以从文件路径打开文件,然后处理其 XML 内容。
    • 基本上LoadAardvarkScript 方法解析 XML 文件并提取存储在 xml 脚本中的标记名。好吧,我现在将尝试一下,看看操作是否顺利:) 我将此答案标记为正确,并且也会投票 :) 如果我遇到任何问题,请发表评论。希望你能取得联系:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    相关资源
    最近更新 更多