1

CollectionViewSourceをSilverlightで実装するときに問題が発生しました。私はこのトピックに慣れていないので、基本的にはWebで検索したものをフォローしています。これが私がこれまでやろうとしてきたことです。

resourcesタグに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のソースを割り当てています。

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;
   }
}

これをテストした後、情報が画面に表示されていないことに気付きました。理由はよくわかりません。誰かがこの問題について私を助けてくれますか?

よろしくお願いします。よろしくお願いします。

4

1 に答える 1

0

毎回ソースをリセットする必要はないと思います。this.TestCVS = CollectionViewSource.GetDefaultView(myCollection); を使用する必要があります。ロードされたイベントで、myCollection に追加および削除します。ObservableCollection を使用すると、無料で変更通知を受け取ることができます。このアイデアを完全にテストしたわけではありませんが、理論上は機能するはずです。

編集: GetDefaultView は Silverlight には存在せず、WPF のみに存在することが判明しました。グループ化に PagedCollectionView(myCOlllection) を正常に使用しました。

于 2010-05-13T16:13:40.440 に答える