【问题标题】:Trouble using CollectionViewSource in Silverlight在 Silverlight 中使用 CollectionViewSource 时遇到问题
【发布时间】:2009-11-30 23:20:43
【问题描述】:

在 silverlight 中实现 CollectionViewSource 时遇到了一些麻烦。我是这个主题的新手,所以基本上我一直在关注我在网上搜索的内容。到目前为止,这是我一直在尝试做的事情。

我正在资源标签中创建一个 CollectionViewSource:

  <UserControl.Resources>
     <CollectionViewSource x:Key="TestCVS">
        <CollectionViewSource.SortDescriptions>
           <scm:SortDescription PropertyName="Value" Direction="Ascending" />
        </CollectionViewSource.SortDescriptions>
     </CollectionViewSource>
   </UserControl.Resources>

然后我将我的 TestCVS 绑定到 HierarchicalDataTemplate 中:

<common:HierarchicalDataTemplate ItemsSource="{Binding Source={StaticResource TestCVS}}">
  <common:HierarchicalDataTemplate.ItemTemplate>
    <common:HierarchicalDataTemplate>
      <Border BorderBrush="#FF464646" BorderThickness="1" CornerRadius="3" Padding="5">
        <Grid>
          <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
          </Grid.RowDefinitions>
          <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="*"/>
          </Grid.ColumnDefinitions>
          <StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
            <TextBlock  TextWrapping="Wrap" Text="{Binding MyClassField}"/>
          </StackPanel>
        </Grid>
      </Border>
    </common:HierarchicalDataTemplate>
  </common:HierarchicalDataTemplate.ItemTemplate>
</common:HierarchicalDataTemplate>

现在,在后面的代码中,我在属性中为 TestCVS 分配 Source,如下所示:

private ObservableCollection<MyClass> _MyClass;
public ObservableCollection<MyClass> MyClass    
{
   get { return _MyClass; }
   set
   {
      var testCVS = (this.Resources["TestCVS"] as CollectionViewSource);

      if (testCVS != null)
        testCVS.Source = value;
   }
}

经过测试,我意识到屏幕上没有显示信息,我真的不知道为什么,有人可以帮我解决这个问题吗?

希望这有任何意义,在此先感谢!

【问题讨论】:

    标签: silverlight collectionviewsource


    【解决方案1】:

    我认为您不需要每次都重置源。你应该使用 this.TestCVS = CollectionViewSource.GetDefaultView(myCollection);在加载的事件上,然后从 myCollection 添加和删除。您可以使用 ObservableCollection 免费获得更改通知。我还没有彻底测试过这个想法,但它应该在理论上可行。

    编辑: 事实证明,Silverlight 中不存在 GetDefaultView,只有 WPF。我已成功使用 PagedCollectionView(myCOllection) 进行分组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-24
      • 2017-09-18
      相关资源
      最近更新 更多