URL, который ссылается на объект - PullRequest
0 голосов
/ 19 января 2012

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

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

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

Urls

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

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

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

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

Существует также способ генерирования событий без создания XDocument.

Я все еще хотел бы получить ответы, если у кого-нибудь получится идея получше, для которой не нужен код.

1 Ответ

1 голос
/ 20 января 2012

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

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

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

...