我无法从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只是流出窗口/视口。如果我给它一个明确的高度,它的行为是正确的,但我显然希望我的窗口可以调整大小。
我该怎么办?
答案 0 :(得分:1)
总结评论,因为您的外部控件是Canvas
,不会限制其子元素来自MSDN:
Canvas的子元素总是给出他们想要的完整大小
这意味着Grid
将获得所需的空间。一种解决方案是删除Canvas
部分或限制Grid
或扩展行的大小