WPF UserControl TreeView高度

时间:2009-09-05 04:20:08

标签: wpf user-controls height

我有一个包含StackPanel和TreeView的用户控件。 所有控件都具有高度=“自动”

当我在窗口上使用自定义控件并设置高度时,请说高度= 800 堆栈面板增长到这个高度,但TreeView不会自动调整高度。

用户控件:

<UserControl x:Class="WPFDataBinding.ucCompanyTreeView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Height="200" Width="300" Loaded="UserControl_Loaded">
<StackPanel>
    <TextBlock Background="#505050" Foreground="Gold">Companys</TextBlock>
    <TreeView Name="myTreeView" ItemTemplate="{StaticResource DetailTemplate}">
    </TreeView>
</StackPanel>

Window1.xaml:

<StackPanel Orientation="Horizontal">
    <local:ucCompanyTreeView Width="400" Height="600">
    </local:ucCompanyTreeView>
</StackPanel>

用户控件内的stackpanel的高度会增加,但Tree视图的高度却不会增加。 我尝试将树视图放在网格中,相同 到处设置高度=“自动”,相同 在任何地方设置VerticalAlignment =“Strech”,相同

Treeview是数据绑定的,所以我认为在数据绑定后它是自动调整大小,但删除此数据绑定的结果相同。

我可以通过调整事件来实现....但我之前遇到过这个问题,只是想了解“某些”控件的高度继承背后的逻辑。

1 个答案:

答案 0 :(得分:3)

如果您要使用DockPanel替换用户控件中的StackPanel,TreeView将默认填充DockPanel ...

<DockPanel>
    <TextBlock DockPanel.Dock="Top" Background="#505050" Foreground="Gold">Companys</TextBlock>
    <TreeView Name="myTreeView" ItemTemplate="{StaticResource DetailTemplate}">
    </TreeView>
</DockPanel>

How to: Choose Between StackPanel and DockPanel