绑定XAML TreeView的MaxHeight到容器高度

本文关键字:高度 MaxHeight XAML TreeView 绑定 | 更新日期: 2023-09-27 17:49:53

我有一个问题,我想绑定我的TreeView的最大高度到我的UserControl的高度,但绑定不起作用。

我试了下面的

<UserControl>
    <StackPanel Name="Container"> 
         <TextBlock>Header</TextBlock>
         <TreeView MaxHeight="{Binding ElementName=Container,Path=ActualHeight}"></TreeView>
    </StackPanel>
</UserControl>

我希望,如果我调整我的窗口大小,UserControl调整大小,所以TreeView也调整大小,所以如果窗口太小,TreeView滚动条出现。但我得到的是没有滚动条和内容的TreeView到达窗口外,是不可见的。

绑定XAML TreeView的MaxHeight到容器高度

这是一个非常常见的错误。StackPanel没有任何调整大小的功能,应该只用于最基本的布局目的。相反,使用Grid Panel,它将自动调整其子控件的大小:

<UserControl>
    <Grid> 
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition />
        </Grid.RowDefinitions>
        <TextBlock>Header</TextBlock>
        <TreeView Grid.Row="1" />
    </Grid>
</UserControl>

您可以使用DockPanel:

<DockPanel LastChildFill="True">
     <TextBlock DockPanel.Dock="Top">Header</TextBlock>
     <TreeView DockPanel.Dock="Top" MaxHeight="{Binding ElementName=Container,Path=ActualHeight}"></TreeView>   
</DockPanel>