我遇到的问题是我想将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的内容到达窗口外面并且不可见。
答案 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>