Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 树视图有时不更新_Wpf_Mvvm_Treeview_Observablecollection - Fatal编程技术网

Wpf 树视图有时不更新

Wpf 树视图有时不更新,wpf,mvvm,treeview,observablecollection,Wpf,Mvvm,Treeview,Observablecollection,我有一个树视图,它绑定到我的ViewModel中的ObservableCollection。我有一个问题,如果我将一个项目添加到ObservableCollection,它有时不会显示在GUI中 我已经调试并发现确实添加了该项,并且确实在可观察的集合上触发了CollectionChanged事件。我的GUI的其他部分甚至会更新以反映新添加和选定的项目。唯一的问题是新项目没有显示在树视图中 这有点奇怪,因为有时候它会出现,有时候它会闪烁然后消失,有时候它根本不会出现。有什么想法吗 编辑: Tree

我有一个树视图,它绑定到我的ViewModel中的ObservableCollection。我有一个问题,如果我将一个项目添加到ObservableCollection,它有时不会显示在GUI中

我已经调试并发现确实添加了该项,并且确实在可观察的集合上触发了CollectionChanged事件。我的GUI的其他部分甚至会更新以反映新添加和选定的项目。唯一的问题是新项目没有显示在树视图中

这有点奇怪,因为有时候它会出现,有时候它会闪烁然后消失,有时候它根本不会出现。有什么想法吗

编辑:

TreeView XAML:

 <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-添加作为答案,我将接受结果表明,我在另一个我忘记的线程中对集合进行了不同的修改(我正在清除集合上的过滤器)。