2012-01-19 6 views
0

В настоящее время я пытаюсь реализовать это приложение Silverlight Timeline в приложении. Проблема заключается в том, что если вы хотите, чтобы заполнить этот график вам необходимо обратиться в XML-файл с помощью URL:url, который ссылается на объект

<timeline:TimelineTray.Urls> 
    <timeline:UriInfo Url="http://localhost:4444/Monet.xml" /> 
</timeline:TimelineTray.Urls> 

Но элементы, которые показаны на временной шкале, не являются статичными. Поэтому есть несколько страниц, на которых мы будем использовать эту временную шкалу. Во время выполнения мы создаем новые, редактируем и удаляем элементы. Поэтому мне пришлось создать динамический XML-документ с помощью класса XDocument (Silverlight). Это работало хорошо, но потом я увидел, что вы должны ссылаться на этот XML-документ с помощью URL:

Urls

';' ограниченный список данных xmls с отображаемыми событиями. Вы должны указать этот параметр или шкала времени будет пустой.

Так хорошо, как я могу решить эту проблему? Способ просто привязать XDocument из ViewModel к TimeLine не будет работать. Я не хочу сохранять этот сгенерированный XDocument, чтобы иметь возможность ссылаться на него. Есть ли другой способ?

Редактировать: Я нашел другое решение. Это через коде, хотя:

var doc = new XDocument(
    // stuff you'd like to get 
); 
timeLine.ResetEvents(doc); 

Там также способ генерации событий без генерации XDocument.

Мне все равно понравятся любые ответы, если кто-нибудь получит лучшую идею, которая не нуждается в кодебе.

ответ

1

Если элемент управления TimeLine не поддерживает привязку к XDocument и вы хотите, чтобы ваш XDocument находился в вашей модели ViewModel, вы можете реализовать свой собственный обработчик PropertyChanged в коде кода View, чтобы обновить временную шкалу, например.

var myVM = this.DataContext as MyViewModelType; 
if (myVM != null) 
{ 
    myVM.PropertyChanged += (s, e) => 
     { 
      if (e.PropertyName == "MyXDocumentProperty") 
      { 
       this.timeLine.ResetEvents(myVM.MyXDocumentProperty); 
      } 
     }; 
} 

Затем, когда виртуальная машина устанавливает свойство MyXDocumentProperty, PropertyChanged будет срабатывать и график будет освежиться.

Смежные вопросы