У меня есть TreeView, связанный с ObservableCollection в моей модели ViewModel. У меня проблема, если я добавлю элемент в ObservableCollection, иногда он не отображается в графическом интерфейсе.TreeView иногда не обновляется
Я отлаживал и обнаружил, что элемент действительно добавлен, и событие CollectionChanged действительно активируется в наблюдаемой коллекции. Другие части моего графического интерфейса даже обновляют, чтобы отразить недавно добавленный и выбранный элемент. Единственная проблема заключается в том, что новый элемент не отображается в TreeView.
Это немного странно, потому что иногда оно появляется, иногда оно мерцает, а затем уходит, а иногда оно вообще не появляется. Есть идеи?
EDIT:
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>
DataTemplate:
<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>
Я добавляю к Qualifiers ObservableCollection. Он отлично отображает их при первом открытии файла и добавлении всех существующих. Проблема в том, что я пытаюсь создать новую.
Можете ли вы показать нам свой TreeView XAML и как он связан с вашей структурой данных? – Rachel
Что произойдет, если вы удалите использование 'SortByNameConverter'? –
То же самое происходит с или без SortByNameConverter – KrisTrip