将XAML TreeView MaxHeight绑定到容器高度

时间:2015-05-20 12:29:59

标签: c# wpf xaml data-binding treeview

我遇到的问题是我想将TreeView的max-height绑定到UserControl的高度,但绑定不起作用。

我尝试了以下

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

我希望,如果我调整窗口大小,UserControl会调整大小,因此TreeView也会调整大小,这样如果窗口很小,就会出现TreeView滚动条。 但我得到的是没有滚动条,TreeView的内容到达窗口外面并且不可见。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

您可以使用DockPanel

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