引用对象的url

本文关键字:url 对象 引用 | 更新日期: 2023-09-27 18:20:54

我目前正在尝试将此Silverlight Timeline实现到应用程序中。问题是,如果你想填写这个时间线,你需要通过url:引用一个XML文件

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

但是时间线上显示的元素并不是静态的。所以有几页我们将使用这个时间线。在运行时,我们生成新的、编辑和删除项目。因此,我不得不通过XDocument类(Silverlight)生成一个动态XML"文档"。这很好,但后来我看到你必须通过url:引用这个XML文档

Urls

';'带有要显示的事件的数据xml的分隔列表。你需要指定此参数,否则时间线将显示为空白。

那么,我该如何解决这个问题呢?将XDocument从ViewModel绑定到TimeLine的方法是行不通的。我不想保存这个生成的XDocument只是为了能够引用它。有其他方法吗?

编辑:我找到了另一个解决方案。这是通过codeehind,不过:

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

还有一种方法可以在不生成XDocument的情况下生成事件。

如果有人有更好的想法,而不需要密码隐藏,我仍然希望得到任何答案。

引用对象的url

如果TimeLine控件不支持绑定到XDocument,并且您希望XDocument位于ViewModel中,则可以在View的代码后台实现自己的PropertyChanged处理程序来刷新时间线,例如

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

然后,当您的VM设置MyXDocumentProperty属性时,PropertyChanged将被激发,时间线将被刷新。