gpt4 book ai didi

wpf - ItemsSource 更改时如何刷新 TreeView ?

转载 作者:行者123 更新时间:2023-12-04 19:30:03 25 4
gpt4 key购买 nike

我的 TreeView 绑定(bind)到 ObservableCollection 并使用 HierarchicalDataTemplates。

我从网络服务中获取模型。

只有当用户单击树中的节点时,才会发送 Web 服务调用以获取其子项。

我的应用程序有一个 TabControl,TreeView 在一个标签页上,另一个标签页有一个数据网格 - 它有一些从 TreeView 中选择的数据。当右键单击数据网格中的项目时,我想在 TreeView 上找到该项目。但现在的问题是当我迭代 TreeView 时,
说,我有一个项目叫

A.A1.A11



我的 TreeView 在第一级有 3 个项目:

一种

C

当我找到 A.A1.A11 ,我要展开A,A1,并高亮A11。

当我迭代 TreeView 时,首先我找到 A,它匹配 A.A1.A11 的第一个路径,
所以我发送一个网络服务请求来获取 A 的 child 。

一旦我明白了,A 的 TreeViewItem 的 DataContext 就会更新,但 TreeViewItem 本身不会。

所以当我检查 A.Items 时,它是空的,迭代无法继续。

当其 ItemsSource 更改时,如何刷新 TreeView 和 TreeViewItem?

这是 TreeView 定义的 xaml
<TreeView x:Name="TreeRoot" 
ItemsSource="{Binding RootItems}"
TreeViewItem.Expanded="TreeViewExpanded"
TreeView.SelectedItemChanged="TreeRootSelectedItemChanged"
ContextMenu="{StaticResource DataGridContextMenu}"
PreviewKeyDown="TreeViewKeyDown"
PreviewMouseLeftButtonDown="TreeViewPreviewLeftMouseButtonDown"
PreviewMouseMove="TreeViewPreviewMouseMove" >
<TreeView.Resources>
<HierarchicalDataTemplate
DataType="{x:Type m:TreeModelBase}"
ItemsSource="{Binding Children}">
<StackPanel>
<Image Source="{Binding ImageFilePath}" />
<TextBlock Text="{Binding Name}" />
<!-- other items removed for brevity -->
<StackPanel.Style>
<Style TargetType="{x:Type StackPanel}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected}"
Value="True">
<Setter Property="Background" Value="DodgerBlue"/>
<Setter Property="TextBlock.Foreground"
Value="White"/>
</DataTrigger>
<DataTrigger Binding="{Binding IsSelected}"
Value="False">
<Setter Property="Background" Value="White"/>
<Setter Property="TextBlock.Foreground"
Value="Black"/>
</DataTrigger>
</Style.Triggers>
</Style>
</StackPanel.Style>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>

最佳答案

根项目是否实现 INotifyPropertychanged 并且您是否调用 INotifyPropertyChanged?集合需要是 ObservableCollection(而不是列表),以便 UI 了解更新。

关于wpf - ItemsSource 更改时如何刷新 TreeView ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8086548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com