Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.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
C# 是否虚拟化分组和树视图_C#_Wpf_.net 4.5_Virtualization_Virtualizingstackpanel - Fatal编程技术网

C# 是否虚拟化分组和树视图

C# 是否虚拟化分组和树视图,c#,wpf,.net-4.5,virtualization,virtualizingstackpanel,C#,Wpf,.net 4.5,Virtualization,Virtualizingstackpanel,在对对象进行分组时,我遇到了TreeView中的虚拟化问题。 在.NET 4.5中添加了一些有用的东西,如virtualzingpanel.isvirtualzingwengroup,我将在下一段代码中尝试使用它: <UserControl><UserControl.Resources> <CollectionViewSource Source="{Binding SharedDevices}" x:Key="Cvs"> <Coll

在对对象进行分组时,我遇到了TreeView中的虚拟化问题。 在.NET 4.5中添加了一些有用的东西,如virtualzingpanel.isvirtualzingwengroup,我将在下一段代码中尝试使用它:

<UserControl><UserControl.Resources>
    <CollectionViewSource Source="{Binding SharedDevices}" x:Key="Cvs">
       <CollectionViewSource.SortDescriptions>
            <componentModel:SortDescription PropertyName="Name" />
        </CollectionViewSource.SortDescriptions>
        <CollectionViewSource.GroupDescriptions>
            <PropertyGroupDescription PropertyName="Assignment" />
            <PropertyGroupDescription PropertyName="Location" />
        </CollectionViewSource.GroupDescriptions>
    </CollectionViewSource>
</UserControl.Resources>

<TreeView ItemsSource="{Binding Source={StaticResource Cvs}}"
                  VirtualizingStackPanel.IsVirtualizing="True"
                 VirtualizingPanel.IsVirtualizingWhenGrouping="True"
                      VirtualizingStackPanel.VirtualizationMode="Standard"
                     VirtualizingPanel.IsContainerVirtualizable="True"
                      VirtualizingPanel.ScrollUnit='Item'
                  VirtualizingPanel.CacheLengthUnit="Item"
                  >
            <TreeView.GroupStyle>                   
                <GroupStyle>
                    <GroupStyle.HeaderTemplate>
                        <DataTemplate>
                            <TextBlock
                    Text="{Binding  Path=Name}" />
                        </DataTemplate>
                    </GroupStyle.HeaderTemplate>
                </GroupStyle>
            </TreeView.GroupStyle>


            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate DataType="data:Device"
                                                  ItemsSource="{Binding Children}">
                    <TextBlock Text="{Binding Name}" />
                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>
</TreeView>

当程序启动时,我展开包含子对象的父对象并滚动TreeView。当父对象移动到可见部分之外时,程序抛出NullReferenceException,来源:PresentationFramework,StackTrace:

在 System.Windows.Controls.VirtualzingStackPanel.FindScrolOffset(可视 (五)

在 System.Windows.Controls.VirtualzingStackPanel.MakeVisible(可视) 可视,矩形)输入 中的System.Windows.Controls.ScrollViewer.ExecuteExtCommand() System.Windows.Controls.ScrollViewer.OnLayoutUpdated(对象发送器, 事件参数(e)在 中的System.Windows.ContextLayoutManager.fireLayoutUpdateEvent() 中的System.Windows.ContextLayoutManager.UpdateLayout() System.Windows.ContextLayoutManager.UpdateLayoutCallback(对象参数)
在System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()中 在System.Windows.Media.MediaContext.RenderMessageHandlerCore(对象)中 在中调整了组件(目标)的大小 System.Windows.Media.MediaContext.RenderMessageHandler(对象 在中调整了组件(目标)的大小 System.Windows.Threading.ExceptionWrapper.InternalRealCall(委托 回调,对象args,Int32 numArgs) System.Windows.Threading.ExceptionWrapper.TryCatchWhen(对象源, 委托回调、对象参数、Int32 numArgs、委托catchHandler)

此ecxeption在事件VirtualzingStackPanel.CleanUpVirtualizedItem之前引发

有没有办法解决这个问题?谢谢你的回答


UPD#1:在.Net 4.5.2和.Net 4.6.1平台上测试

我在4.6.1上有相同的错误,我已经通过将解决方案升级到4.7.2.Net版本修复了它

(不确定是否重复)。在.Net 4.5.2和.Net 4.6.1上测试。不变