C# 在树视图中使用WrapPanel
我希望显示具有详细级别的数据,因此我使用TreeView,但每个细节都很短,因此我希望使用WrapPanel(水平)在每行中显示许多细节 比如:C# 在树视图中使用WrapPanel,c#,wpf,vb.net,xaml,panel,C#,Wpf,Vb.net,Xaml,Panel,我希望显示具有详细级别的数据,因此我使用TreeView,但每个细节都很短,因此我希望使用WrapPanel(水平)在每行中显示许多细节 比如: 这是一个未展开的项目 这是展开项的标题 信息1信息2信息3信息4 信息5信息6信息7 因此,我尝试定义TreeViewItem的模板,但无法将wrappanel 包当info的datatemplate宽度为100且TreeView时,我每行只有一个信息 是500。我试着设置包装的宽度,ItemsWidth,但没有成功 有什么想法吗 编辑:我终于找到
- 这是一个未展开的项目
- 这是展开项的标题 信息1信息2信息3信息4 信息5信息6信息7
编辑:我终于找到了一个“更简单”的解决方案。但似乎我们 必须定义包装的宽度,这使得解决方案不那么通用 我找到了一个解决方案:以一种风格定义 TreeView项目:
<Style TargetType="TreeViewItem">
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"
Width="520"
HorizontalAlignment="Stretch"
Margin="0"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
IsItemsHost="True"
/>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="TreeViewItem">
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"
Width="520"
HorizontalAlignment="Stretch"
Margin="0"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
IsItemsHost="True"
/>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
</Style>
为了完整起见,我仍然让这个不起作用的解决方案在这里。
(为什么不起作用?)
!!!! 这是未包装的包装面板
试试看
这些将帮助您追踪问题编辑:我终于找到了一个“更简单”的解决方案。但似乎我们 必须定义包装的宽度,这使得解决方案不那么通用。 (可能是宽度的装订(但哪个?)可以解决这个问题) 我找到了一个解决方案:以一种风格定义 TreeView项目:
<Style TargetType="TreeViewItem">
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"
Width="520"
HorizontalAlignment="Stretch"
Margin="0"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
IsItemsHost="True"
/>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="TreeViewItem">
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"
Width="520"
HorizontalAlignment="Stretch"
Margin="0"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
IsItemsHost="True"
/>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
</Style>
您必须设置
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
给你
<TreeView/>
不适合
<WrapPanel/>
例如:
<TreeView x:Name="fieldTreeView" Grid.Row="1" Margin="5,0,5,0" Background="Beige"
ItemsSource="{Binding Source={StaticResource bla}}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<TreeView.Resources>
<DataTemplate DataType="{x:Type Model:bla}">
<StackPanel Orientation="Vertical">
<Label Content="{Binding Name}"/>
<TextBox Text=""/>
</StackPanel>
</DataTemplate>
</TreeView.Resources>
<TreeView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</TreeView.ItemsPanel>
</TreeView>
这个解决方案适合我。你看到包装纸了吗?它有滚动条吗?也许试着禁用它们。是的,事实上,正如我所说,它是有效的,除了它显示的项目,如果面板是一个垂直堆叠面板。无论我改变什么,它都是水平居中的。是的,它尝试将水平滚动查看器设置为禁用,但它不起作用。如果包装层更宽,会发生什么?解决方案发现,尝试为它设置一个边框,确保它确实是垂直的,或者它只是上面提到的可用空间。还是不知道为什么另一个不行但是。。Thx支持。我将以post的形式编写,如果是,则将其标记为答案,以便遇到相同问题的其他用户也可以享受。