WPF CollectionViewSource数据显示问题

时间:2015-08-14 21:30:46

标签: c# wpf mvvm binding collectionviewsource

我有一个ComboBox设置来显示ApplicationNames的绑定列表。 ComboBox绑定的列表类型是procedure TForm6.PrintDocumentClick(Sender: TObject); var iPrintOptions: Integer; begin DPL := TDebenuPDFLibrary1115.Create; try UnlockResult := DPL.UnlockKey('...'); // Add trial license key here if UnlockResult = 1 then begin // Load your file DPL.LoadFromFile('test.pdf', ''); // Configure print options iPrintOptions := DPL.PrintOptions(0, 0, 'Printing Sample'); // Print the current document to the default printing // using the options as configured above DPL.PrintDocument(DPL.GetDefaultPrinterName(), 1, 1, iPrintOptions); end; finally DPL.Free; end; end; 。我正在使用CollectionViewSource进行排序:

ObservableCollection<Apps>

ComboBox写成:

<CollectionViewSource
    x:Key="Apps"
    Source="{Binding Path=Apps}"
    >
    <CollectionViewSource.SortDescriptions>
        <scm:SortDescription PropertyName="AppNames" Direction="Ascending"/>
    </CollectionViewSource.SortDescriptions>
</CollectionViewSource>

现在,当我打开容纳此组合框的视图时,所有应用程序名称都在组合框中正确显示并进行排序。我遇到的问题是当我关闭该视图然后重新打开视图时。当我重新打开视图时,所有内容都像第一次一样完全加载,就像我如何获得ObervableCollection一样,但这次没有出现在ComboBox中。此外,在ViewModel中,我确实清除了集合,并在View和ViewModel关闭时删除所有已注册的事件。

这是我关闭的地方:

<ComboBox
                SnapsToDevicePixels="True"
                Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="0" Grid.RowSpan="1"
                DataContext="{StaticResource Apps}"
                ItemsSource="{Binding}"
                ItemContainerStyle="{StaticResource ApplicationItemStyle}"
                ItemTemplate="{StaticResource applicationComboTemplate}"
                >
            </ComboBox>

如果我从CollectionViewSource复制void CleanUpApps() { if (this.Apps != null) { foreach (var app in this.Apps) app.Dispose(); this.Apps.Clear(); this.Apps.CollectionChanged -= OnAppsCollectionChanged; } } 并将其放在ComboBoxes DataContext中的{Binding Path=Apps}上,那么一切正常,当然,除了现在的排序,我第一次打开视图时以及每次之后。

我试图找出我在CollectionViewSource中做错了什么,这导致第二次加载视图时没有在组合框中显示任何应用程序名称。

0 个答案:

没有答案