Wpf 树视图有时不更新
我有一个树视图,它绑定到我的ViewModel中的ObservableCollection。我有一个问题,如果我将一个项目添加到ObservableCollection,它有时不会显示在GUI中 我已经调试并发现确实添加了该项,并且确实在可观察的集合上触发了CollectionChanged事件。我的GUI的其他部分甚至会更新以反映新添加和选定的项目。唯一的问题是新项目没有显示在树视图中 这有点奇怪,因为有时候它会出现,有时候它会闪烁然后消失,有时候它根本不会出现。有什么想法吗 编辑: TreeView XAML:Wpf 树视图有时不更新,wpf,mvvm,treeview,observablecollection,Wpf,Mvvm,Treeview,Observablecollection,我有一个树视图,它绑定到我的ViewModel中的ObservableCollection。我有一个问题,如果我将一个项目添加到ObservableCollection,它有时不会显示在GUI中 我已经调试并发现确实添加了该项,并且确实在可观察的集合上触发了CollectionChanged事件。我的GUI的其他部分甚至会更新以反映新添加和选定的项目。唯一的问题是新项目没有显示在树视图中 这有点奇怪,因为有时候它会出现,有时候它会闪烁然后消失,有时候它根本不会出现。有什么想法吗 编辑: Tree
<TreeView Name="cedarTreeView"
ItemsSource="{Binding CurrentFiles}"
ItemTemplate="{StaticResource MyFileTemplate}"
VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.VirtualizationMode="Recycling">
<TreeView.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel />
</ItemsPanelTemplate>
</TreeView.ItemsPanel>
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
<Setter Property="FontSize" Value="12" />
<Setter Property="AllowDrop" Value="True" />
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
数据模板:
<HierarchicalDataTemplate x:Key="MyFileTemplate"
ItemTemplate="{StaticResource QualifierTemplate}"
ItemsSource="{Binding Qualifiers, Converter={StaticResource SortByNameConverter}}">
<HierarchicalDataTemplate.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
<Setter Property="Visibility" Value="{Binding IsVisible, Converter={StaticResource BoolToVisConverter}}" />
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
<TextBlock Text="{Binding Name, Mode=OneWay}" ToolTip="{Binding Name, Mode=OneWay}" Tag="{Binding DataContext, RelativeSource={RelativeSource AncestorType=TreeView}}">
<TextBlock.ContextMenu>
Some Context Menu Stuff Here
</TextBlock.ContextMenu>
</TextBlock>
</HierarchicalDataTemplate>
这里有一些上下文菜单的东西
我将添加到限定符ObservableCollection中。当我第一次打开文件并添加所有现有文件时,它们显示得很好。问题是当我尝试创建一个新的集合时。您可能正在从单独的线程或任务修改集合吗?您能否向我们展示您的TreeView XAML以及它是如何绑定到您的数据结构的?如果您删除了
SortByNameConverter
的用法,会发生什么情况?使用或不使用SortByNameConverter时也会发生同样的情况可能是从单独的线程或任务修改集合?啊,原来我在另一个我忘记的线程中对集合进行了不同的修改(我正在清除集合上的筛选器)@JoelLucsy-添加作为答案,我将接受结果表明,我在另一个我忘记的线程中对集合进行了不同的修改(我正在清除集合上的过滤器)。