我在列表框中添加了一个名为fixture的对象。我查看所有XML文件的目录和子目录。然后我得到文件的名称,并将它们全部列入清单。
public void CreateLibrary()
{
List<string> fixtureList = new List<String>();
string[] dirs = Directory.GetFiles(@"C:\Windows.old\Users\Michael\Desktop\data\fixtures\", "*.xml",
SearchOption.AllDirectories);
foreach (string dir in dirs)
{
string fixture = System.IO.Path.GetFileName(dir);
lbxLibrary.Items.Add(fixture);
}
我希望能够从列表框中当前选定的项目中获取文件网址。我知道我可能需要改变我导入文件的方式,这很好,但我在一些建议和一些文档后阅读。
提前干杯:)
迈克尔。
答案 0 :(得分:0)
我建议您创建一个名为XmlFileInfo的类,而不是直接向ListBox添加字符串,您可以在其中存储每个已加载的xml文件的信息。
public class XmlFileInfo
{
public XmlFileInfo(string fixture, string path)
{
Fixture = fixture;
Path = path;
}
public string Fixture { get; set; }
public string Path { get; set; }
}
然后使用XmlFileInfo创建一个ObservableCollection并将ListBox绑定到该集合,就像这样
<ListBox Name="lbxLibrary"
ItemsSource="{Binding XmlFileInfoCollection}"
DisplayMemberPath="Fixture"
SelectionChanged="lbxLibrary_SelectionChanged"/>
后面的代码看起来如何
public MainWindow()
{
InitializeComponent();
XmlFileInfoCollection = new ObservableCollection<XmlFileInfo>();
this.DataContext = this;
}
public ObservableCollection<XmlFileInfo> XmlFileInfoCollection
{
get;
private set;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
CreateLibrary();
}
public void CreateLibrary()
{
string[] dirs = Directory.GetFiles(@"C:\Windows.old\Users\Michael\Desktop\data\fixtures\", "*.xml",
SearchOption.AllDirectories);
foreach (string dir in dirs)
{
string fixture = System.IO.Path.GetFileName(dir);
XmlFileInfo xmlFileInfo = new XmlFileInfo(fixture, dir);
XmlFileInfoCollection.Add(xmlFileInfo);
}
}
在某些情况下,比如SelectionChanged,您可以轻松找到所选项目的网址
private void lbxLibrary_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
XmlFileInfo xmlFileInfo = lbxLibrary.SelectedItem as XmlFileInfo;
string path = xmlFileInfo.Path;
// ...
}
<强>更新强>
上传的示例项目here