2

我得到了下面的XAML CollectionViewSource定义:当是CollectionViewSource来源属性集,如果viewSource是静态资源

<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

当应用程序在浏览器中显示给我,虽然已经发生绑定,如果我现在把某个断点放在某处查看&源现在不为空。

那么,什么时候确切是来源集?我在哪里可以访问加载我的应用程序的舞台上的视图?

也许这对于viewource来说并不是真的一般的绑定问题,什么时候是静态资源绑定集?

回答

1

结合被初始化时设定,因为这行被解析:

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

但无论当时在AvailablePersons财产存在数据绑定点。在任何相关的异步加载完成之前它将保持为空。

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

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

+0

当然,可用人员不会被提取(这是一个样本名称),实际上,此值(ObservableCollection )在viewmodel构造函数中设置,并且包含10个可在没有任何数据加载或服务调用的情况下可用的项目。 http://stackoverflow.com/questions/6305608/how-to-preserve-twoway-binding-of-currentitem-when-databinding-to-collectionviews这里是完整的代码和另一个问题。 – 2011-06-11 10:18:54