如何在加载之前延迟XAML绑定

时间:2011-06-27 22:16:55

标签: wpf xaml binding

看看这个:

<ItemsControl ItemsSource="{x:Static local:Cache.Colors}" />

这将ItemsControl绑定到名为List的静态属性。在这种情况下,Colors属性是名为Cache的类的一部分。

但是有一个问题。以这种方式绑定时,在应用程序中建立安全性之前,在Initialize方法期间调用Colors属性。

由于尚未建立安全性,因此调用Colors会导致异常,因为安全性是成功调用数据服务的必要条件。

解决方案将此操作从XAML移至代码隐藏,并确保在Initialized期间在Loaded事件中而不是在构造函数中执行。

这里真正的问题是,我想在XAML中这样做。有可能吗?

2 个答案:

答案 0 :(得分:3)

我通常通过绑定ItemsSource来实现INotifyCollectionChanged接口来解决这个问题。初始化时,项目源为空,然后在加载时填充项目源。项目源的填充会引发集合更改事件,从而导致您的项目控件在源中重新绑定/添加新项目。

答案 1 :(得分:0)

我的解决方案是先在App.xaml.cs中运行它。