WPF中的垂直大小问题

时间:2014-05-18 15:14:15

标签: wpf xaml wpftoolkit

我无法从https://wpftoolkit.codeplex.com/垂直调整CheckListBox控件的大小。我是WPF的一个一周大的新手,所以这可能是(垂直)大小调整的一般问题。

鉴于我的网格,我希望前5行可以调整大小,它们需要是,并且在我的视口中,我希望第6行中的CheckListBox控件只是垂直填充剩余空间。

我的问题是,当我用大量元素填充CheckListBox时,控件只会扩展/溢出视口。我想要它做的是垂直地假设剩余空间的高度,这将使它显示内部滚动条。

<Grid Grid.Column="0">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <Label Grid.Row="0">Some title</Label>
    <RadioButton Grid.Row="1" GroupName="NameSortRadioButtonGroup">Firstname Lastname</RadioButton>
    <RadioButton Grid.Row="2" GroupName="NameSortRadioButtonGroup">Lastname, Firstname</RadioButton>
    <TextBox Grid.Row="3" Margin="0,5" />
    <Label Grid.Row="4" Content="{Binding ElementName=MyCheckListBox, Path=SelectedItems.Count}" />
    <xctk:CheckListBox
        Grid.Row="5"
        Name="MyCheckListBox"
        VerticalAlignment="Stretch"
        VerticalContentAlignment="Stretch"
        Height="Auto"
        />
</Grid>

我遗漏了一些父元素以简化。网格位于网格中,位于画布中,位于网格中,此外部网格是Window元素的直接子节点。

我已经尝试将CheckListBox控件包装在StackPanel中,Height =“Auto”(以消除CheckListBox中的错误的可能性),并且此处使用

设置CheckListBox的高度
  

高度=“{Binding ElementName = CheckListBoxStackPanelWrapper,Path = ActualHeight}”

我最初也尝试使用StackPanel以及后来的DockPanel而不是Grid控件来完成整个事情。

在所有情况下,CheckListBox只是流出窗口/视口。如果我给它一个明确的高度,它的行为是正确的,但我显然希望我的窗口可以调整大小。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

总结评论,因为您的外部控件是Canvas,不会限制其子元素来自MSDN

  

Canvas的子元素总是给出他们想要的完整大小

这意味着Grid将获得所需的空间。一种解决方案是删除Canvas部分或限制Grid或扩展行的大小