获取异常宽度和高度必须为非负;在WPF中将项目添加到虚拟化树视图时
我正在通过设置属性使用Ui虚拟化来使用虚拟化树状视图 在树样式中,并在ItemsPanelTemplate中使用。treeview正在虚拟化并能够滚动,但在向treeview添加子项时出现异常:“System.ArgumentException:宽度和高度必须为非负。” 我使用的treeviewStyle和TreeViewItem stlye放在下面:获取异常宽度和高度必须为非负;在WPF中将项目添加到虚拟化树视图时,wpf,treeview,virtualization,Wpf,Treeview,Virtualization,我正在通过设置属性使用Ui虚拟化来使用虚拟化树状视图 在树样式中,并在ItemsPanelTemplate中使用。treeview正在虚拟化并能够滚动,但在向treeview添加子项时出现异常:“System.ArgumentException:宽度和高度必须为非负。” 我使用的treeviewStyle和TreeViewItem stlye放在下面: <Style x:Key="TreeViewStyle" TargetType="TreeView"> <S
<Style x:Key="TreeViewStyle" TargetType="TreeView">
<Setter Property="OverridesDefaultStyle" Value="True" />
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="ScrollViewer.CanContentScroll" Value="True" />
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto" />
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Visible" />
<Setter Property="Stylus.IsFlicksEnabled" Value="False" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="VirtualizingStackPanel.IsVirtualizing" Value="True" />
<Setter Property="VirtualizingStackPanel.VirtualizationMode" Value="Standard" />
<!-- TreeView ItemsPresenter StackPanel VirtualizingStackPanel -->
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<VirtualizingStackPanel Height="366" />
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TreeView">
<Border Name="Border"
Background="#232323"
BorderThickness="1"
CornerRadius="1">
<ScrollViewer Name="_tv_scrollviewer_"
CanContentScroll="True"
Focusable="False"
Padding="5,1,0,2"
Template="{StaticResource ScrollViewerControlTemplate3}">
<ItemsPresenter />
</ScrollViewer>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type TreeViewItem}">
<Style.Triggers>
<Trigger Property="HasItems" Value="False">
<Setter Property="Background" Value="Red" />
<Setter Property="BorderBrush" Value="Blue" />
</Trigger>
</Style.Triggers>
</Style>
<!-- Placing items in the tree view -->
<Style x:Key="TreeViewItemStyle" TargetType="{x:Type TreeViewItem}">
<Setter Property="HorizontalContentAlignment" Value="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type
ItemsControl}}}" />
<Setter Property="VerticalContentAlignment" Value="{Binding VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type
ItemsControl}}}" />
<Setter Property="Padding" Value="1,0,0,0" />
<Setter Property="Margin" Value="-24,0,0,0" />
<Setter Property="Foreground" Value="White" />
<Setter Property="FocusVisualStyle" Value="{StaticResource TreeViewItemFocusVisual}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TreeViewItem}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" MinWidth="19" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Border x:Name="Bd"
Grid.Column="1"
Margin="0,0,0,0"
BorderBrush="#505050"
BorderThickness="0,0,0,0"
Padding="{TemplateBinding Padding}"
SnapsToDevicePixels="true">
<!-- Header/Root Elements -->
<ContentPresenter x:Name="PART_Header"
Margin="2,0,0,0"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
ContentSource="Header"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</Border>
<!-- Child Elements -->
<ItemsPresenter x:Name="ItemsHost"
Grid.Row="1"
Grid.Column="1"
Grid.ColumnSpan="2"
Margin="0,0,0,0" />
</Grid>
<ControlTemplate.Triggers>
<!--<Trigger Property="IsExpanded" Value="false">
<Setter TargetName="ItemsHost" Property="Visibility" Value="Collapsed" />
</Trigger>-->
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我使用的是.Net版本4.5 VS2010。什么是
ScrollViewerControlTemplate3
?如何将子项添加到treeview?你能最小化代码来定位错误吗?你最终解决了这个问题吗?我也看到了。。。