2

我在 XAML 中得到了以下 CollectionViewSource 定义:

 <UserControl.Resources>
        <CollectionViewSource x:Key="PersonsViewSource" Source="{Binding AvailablePersons}">
            <CollectionViewSource.SortDescriptions>
                <scm:SortDescription PropertyName="Surname" Direction="Ascending" />
            </CollectionViewSource.SortDescriptions>
        </CollectionViewSource>
    </UserControl.Resources>

我有一个绑定到此 CVS 的组合框,并希望从如下代码访问视图:

(Resources["PersonsViewSource"] as CollectionViewSource).View

但是,即使我尝试在构造函数之后InitializeComponent()或在Loaded event处理程序 View & Source 中访问它仍然是null.

当应用程序在浏览器中显示给我时,虽然绑定已经发生,并且如果我现在在某处放置断点,则视图和源现在不为空。

那么 Source 到底是什么时候设置的呢?在加载我的应用程序的阶段我可以在哪里访问视图?

也许这是一个与视图源无关的一般绑定问题,什么时候设置静态资源绑定?

4

1 回答 1

1

绑定是在初始化期间设置的,因为解析了这一行:

<CollectionViewSource x:Key="PersonsViewSource" Source="{Binding AvailablePersons}">

但该绑定指向当时 AvailablePersons 属性中存在的任何数据。在任何相关的异步加载完成之前,它将保持为空。

使用 Silverlight,您通常对数据加载事件感兴趣,而不是对可视化树何时显示感兴趣。

你能告诉我们更多关于你如何为 AvailablePersons 获取数据的信息吗?

于 2011-06-10T23:09:32.430 回答