【问题标题】:When is CollectionViewSource Source property set if viewSource is a static resource如果 viewSource 是静态资源,何时设置 CollectionViewSource Source 属性
【发布时间】:2011-06-10 14:16:35
【问题描述】:

我在 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 处理程序中访问它,视图和源仍然是 null

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

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

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

【问题讨论】:

    标签: silverlight silverlight-4.0 binding collectionviewsource


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 当然,没有获取可用的人(这是一个示例名称)实际上这个值(ObservableCollection)是在视图模型构造函数中设置的,并且包含大约 10 个可用的项目,无需任何数据加载或服务调用. stackoverflow.com/questions/6305608/… 这里是完整代码和另一个问题。
    猜你喜欢
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多