TreeView иногда не обновляется - PullRequest
0 голосов
/ 21 декабря 2011

У меня есть TreeView, который связан с ObservableCollection в моей ViewModel.У меня проблема, когда я добавляю элемент в ObservableCollection, иногда он не отображается в графическом интерфейсе.

Я отладил и обнаружил, что элемент действительно добавляется, и событие CollectionChanged действительно запускается в наблюдаемой коллекции.Другие части моего GUI даже обновляются, чтобы отразить добавленный и выбранный элемент.Единственная проблема заключается в том, что новый элемент не отображается в TreeView.

Это немного странно, потому что иногда он появляется, иногда вспыхивает, а затем уходит, а иногда вообще не появляется.Есть идеи?

РЕДАКТИРОВАТЬ:

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.Он показывает их нормально, когда я впервые открываю файл и добавляю все существующие.Проблема в том, когда я пытаюсь создать новый.

1 Ответ

0 голосов
/ 03 января 2012

Возможно, вы изменяете коллекцию из отдельного потока или задачи?

...