Получить URL файла XML из списка после создания объекта? - PullRequest
1 голос
/ 06 декабря 2010

Я добавил объект с именем 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);
        }

Я бы хотел получить URL файла из выбранного в данный момент элемента в списке. Я знаю, что мне может понадобиться изменить способ импортирования файлов, что нормально, но я после некоторого совета и некоторых документов для чтения.

Приветствия заранее:)

Майкл.

1 Ответ

0 голосов
/ 06 декабря 2010

Вместо того, чтобы добавлять строки непосредственно в ListBox, я бы предложил вам создать класс с именем что-то вроде XmlFileInfo, в котором вы будете хранить информацию для каждого из ваших загруженных XML-файлов.

public class XmlFileInfo
{
    public XmlFileInfo(string fixture, string path)
    {
        Fixture = fixture;
        Path = path;
    }
    public string Fixture { get; set; }
    public string Path { get; set; }
}

Затем создайте ObservableCollection с XmlFileInfo ипривяжите свой 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, вы можете легко найти URL для выбранногоэлемент вроде этого

private void lbxLibrary_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    XmlFileInfo xmlFileInfo = lbxLibrary.SelectedItem as XmlFileInfo;
    string path = xmlFileInfo.Path;
    // ...
}

Обновление

Загруженный пример проекта здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...