引用对象的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的情况下生成事件。
如果有人有更好的想法,而不需要密码隐藏,我仍然希望得到任何答案。
如果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将被激发,时间线将被刷新。