Целью этого вопроса является выяснение способа получения определенного содержимого ObservableCollection
(strings
), а также их запись в текстовый файл.Запись содержимого ObservableCollection в текстовый файл
Эта коллекция структурирована с использованием узлов, поскольку она используется для реализации TreeView
. С этим сказанным я в настоящее время пытаюсь получить дочерние значения родительского узла следующим образом:
//I am currently getting an InvalidOperationException -- Sequence contains no matching element
var Node = Collection.GetAllChildren(x => x.Children).Distinct().ToList().First(x => x.DisplayName == Name);
Для того, чтобы записать в файл, я использую этот метод File.
: File.WriteAllLines()
. Я понимаю, что этот метод принимает имя_файла, а затем IEnumerable
(a List
и т. Д.). ObservableCollection
содержит метод, который соответствует IEnumberable
или мне нужно добавить содержимое в List
?
Сейчас я пытаюсь это для записи в файл строку:
File.WriteAllLines(FileName, new ObservableCollection<string> { ViewModel.Data.ToList() });
Как я могу исправить эти две вредные части моего кода? Каков правильный способ получить нужную мне информацию, а затем добавить ее в файл?
Обновление: Это текущие ошибки, которые я получаю по вышеуказанной строке кода. Если я правильно реализую это (что я, на основе ответов), почему я получаю эти ошибки компиляции? (Примечание: type
был включен в string
)
Update 2: Я обновил аргумент, который будет записан в файл. Data
- ObservableCollection<ViewModel>
.
Хорошо, я должен реализует это правильно теперь зависит от вашего ответа. Тем не менее, я все еще получаю ошибки компиляции. Пожалуйста, взгляните на мое обновление. –
@ Eric Во-первых, если 'ObservableCollection' построен с аргументом списка, синтаксис должен быть 'new ObservableCollection (list)', с круглыми скобками, см. Мое последнее редактирование. Но, пожалуйста, обратите внимание, как отметил Kaz-LA, что вы можете использовать список как есть, не обертывая его «ObservableCollection». Во-вторых, ошибка говорит о том, что мы не имеем дело с «List », но с «List ». Каков тип 'NodeName'? Вы уверены, что ошибка компиляции вызвана указанной вами линией? –
AlexD
На самом деле это выглядит так: 'File.WriteAllLines (FileName, new ObservableCollection {ViewModel.ObservableCollection .ToList()});' –