Загрузка XML-файла с другим представлением для модели представления? - PullRequest
0 голосов
/ 20 июля 2011

Есть две вещи, которые я хочу сделать с MVVMLight, но я не знаю, с чего начать.

  • Сериализация XML-файла в качестве модели представления или использование в качестве источника данных

Не могли бы вы порекомендовать другой формат (я могу изменить на этом этапе), я не могу найти никаких руководств для mvvmlight, касающихся первоначальной настройки источника данных.

  • Использование другого макета в зависимости от конкретного типа записи в файле XML

Я собираюсь использовать операторы switch, чтобы скрыть / показать и реорганизовать все программно, но это кажется неправильным.

В настоящее время я использую linq для чтения в модель, но без использования MVVMlight (будет ли это работать с MVVM?)

public IEnumerable<Quiz.Question> LoadQuestions()
{

        XDocument questionData = XDocument.Load("questions.xml");

        var data = from query in questionData.Descendants("question")
                   select new Quiz.Question
                   {
                       QuestionTitle = (string)query.Attribute("title"),
                       QuestionText = query.Element("text") != null ? query.Element("text").Value.Trim() : string.Empty,
                       QuestionImage = query.Element("image") != null ? query.Element("image").Attribute("src").Value : string.Empty
                   };

        var shuffledData = Enumerable.Shuffle<Quiz.Question>(data);

        return shuffledData;
}

1 Ответ

1 голос
/ 20 июля 2011

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

Вам необходимо найти баланс между: производительностью / скоростью сериализации и десериализации, простотой работы с данными, размером файлов, количеством файлов (и управлением файлами) и возможностью использовать внешние библиотеки.

Когда дело доходит до файловых форматов и сериализации, двоичный файл обычно быстрее, чем JSON, который обычно быстрее XML.

Библиотека, которую вы используете для сериализации, также может сильно повлиять на ситуацию. (Совет. При использовании данных в формате JSON используйте JSON.Net, а не DatContractjsonSerializer.)

Опять же, нет общих правил отображения разных данных. То, как вы это сделаете, будет зависеть от данных, различий и архитектуры приложения.

Если данные сильно отличаются, вы можете использовать разные страницы для разных данных.
Вы можете использовать разные пользовательские элементы управления для каждого типа данных и загружать соответствующий элемент на странице.
Вы можете использовать разные шаблоны.
Или вы можете связать (привязать) видимость элемента UIElement с типом данных или с наличием в данных определенных полей.

...