将 XAML TreeView MaxHeight 绑定到容器高度
Bind XAML TreeView MaxHeight to Containers Height
我有一个问题,我想将我的 TreeView 的最大高度绑定到我的 UserControl 的高度,但是绑定不起作用。
我尝试了以下方法
<UserControl>
<StackPanel Name="Container">
<TextBlock>Header</TextBlock>
<TreeView MaxHeight="{Binding ElementName=Container,Path=ActualHeight}"></TreeView>
</StackPanel>
</UserControl>
我希望,如果我调整 window 的大小,UserControl 也会调整大小,因此 TreeView 也会调整大小,因此如果 window 太小,TreeView 滚动条就会出现。
但是我得到的是没有滚动条,并且 TreeView 的内容到达 window 之外并且不可见。
这是一个荒谬的常见错误。 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>
我有一个问题,我想将我的 TreeView 的最大高度绑定到我的 UserControl 的高度,但是绑定不起作用。
我尝试了以下方法
<UserControl>
<StackPanel Name="Container">
<TextBlock>Header</TextBlock>
<TreeView MaxHeight="{Binding ElementName=Container,Path=ActualHeight}"></TreeView>
</StackPanel>
</UserControl>
我希望,如果我调整 window 的大小,UserControl 也会调整大小,因此 TreeView 也会调整大小,因此如果 window 太小,TreeView 滚动条就会出现。 但是我得到的是没有滚动条,并且 TreeView 的内容到达 window 之外并且不可见。
这是一个荒谬的常见错误。 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>