gpt4 book ai didi

c# - 避免更新数据后TreeView的折叠效果

转载 作者:行者123 更新时间:2023-12-04 06:07:08 24 4
gpt4 key购买 nike

我有一个用于显示事件的 TreeView。它工作得很好,但是每次有新事件进入并填充树时,树会再次折叠到原始位置。当刷新时间小于 1 秒并且不允许用户与树的项目进行交互时,这是非常烦人的。
有什么办法可以避免这种行为吗?

<TreeView Margin="1" BorderThickness="0" Name="eventsTree" ItemsSource="{Binding EventAlertContainers}" 
Background="#00000000" ScrollViewer.VerticalScrollBarVisibility="Auto" FontSize="14"
VirtualizingStackPanel.IsVirtualizing="True">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type C:EventAlertContainer}" ItemsSource="{Binding EventAlerts}">
<StackPanel Orientation="Horizontal">
<Image Width="20" Height="20" Margin="3,0" Source="Resources\Process_info_32.png" />
<TextBlock FontWeight="Bold" FontSize="16" Text="{Binding Description}" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type C:EventAlert}" ItemsSource="{Binding Events}">
<StackPanel Orientation="Horizontal">
<Image Width="20" Height="20" Margin="0,0" Source="Resources\clock2_32.jpg" />
<TextBlock FontWeight="DemiBold" FontSize="14" Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type C:Event}">
<StackPanel Orientation="Horizontal">
<Image Width="20" Height="20" Margin="0,0" Source="Resources\Task_32.png" />
<StackPanel Orientation="Vertical">
<TextBlock FontSize="12" Text="{Binding Name}" />
</StackPanel>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>

最佳答案

如果刷新整个EventAlertContainers收藏,这会发生。 WPF 不知道新集合中的项目与旧集合中的项目相同。

不要重新填充,保留相同的集合,并注意仅添加和删除已更改的项目。确保您的收藏是 ObservableCollection s或支持INotifyCollecitonChanged并且仅在必要时进行最少的更改(添加、删除和更新)。

关于c# - 避免更新数据后TreeView的折叠效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8224537/

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