我有一个wpf c#应用程序。 在我的窗口中,我想在打开时以一定的高度开始。但我也想让用户能够调整窗口大小。 我的窗口有一个dockpanel,lastChildFill设置为true。它左边有一棵树,可以选择一个你希望看到它的细节的部分,中间是一个分隔符,右边是该部分的细节(你需要最后一个子填充,这样才能获得所有空间)。 代码如下所示:
<StackPanel>
<DockPanel LastChildFill="True" Background="#344755">
<TextBlock Text="Header" Background="#344755" Foreground="White"/>
</DockPanel>
<DockPanel LastChildFill="True" Margin="5">
<telerik:RadTreeView x:Name="treeV">
<telerik:RadTreeView.Items>
<telerik:RadTreeViewItem Header="General" />
<telerik:RadTreeViewItem Header="General2" />
<telerik:RadTreeViewItem Header="General3" />
<telerik:RadTreeViewItem Header="General4" />
</telerik:RadTreeView.Items>
</telerik:RadTreeView>
<Separator/>
<Grid >
<ScrollViewer VerticalScrollBarVisibility="Auto">
<ItemsControl>
<DockPanel LastChildFill="True" Margin="5">
<Grid >
<TextBlock Text="Something"></TextBlock>
<CheckBox HorizontalAlignment="Right"/>
</Grid>
</DockPanel>
// And many more dock panels
</ItemsControl>
</ScrollViewer>
</Grid >
</DockPanel>
</StackPanel>
这是我的问题:如果我没有给第二个停靠面板高度,窗口会自动变大,滚动从不显示。如果我确实给出了高度,那么滚动会显示,但如果用户调整窗口大小,则停靠面板不会调整大小,因此分隔符也不会。
有什么想法吗?
答案 0 :(得分:0)
您需要重新考虑您的布局 一方面,您不需要使用停靠面板来填充可用区域
这里是最常见布局的快速描述
StackPanel从上到下或从左到右创建项目列表 装置
网格将项目附加到按网格大小的行和列定义的网格中(统一网格执行相同但行和列设置为均等填充可用空间)
Dockpanel使用添加的顺序将项目附加到其边缘 和Dock属性,默认情况下,最后一项设置为填充 中间
距离边缘固定距离的画布位置项
因此,如果你想要w在右边的左边z和x&amp; z,那么控制w,x,y,z Y分享中心
<DockPanel>
<w DockPanel.Dock="Left" />
<z DockPanel.Dock="Right" />
<UniformGrid Columns="2">
<x/>
<y/>
</UniformGrid>
</DockPanel>
如果你想要覆盖屏幕的前1/4和x,y&amp; z要垂直堆叠在剩余的3/4和可滚动的
上<Grid>
<Grid.ColumnDefintions>
<ColumnDefintion \>
<ColumnDefintion Width="3*" \>
<Grid.ColumnDefintions>
<w/>
<ScrollViewer>
<StackPanel>
<x/>
<x/>
<x/>
</StackPanel>
</ScrollViewer>
</Grid>
如果布局容器中只有1个项目,则不需要该容器
快速摆弄你上面的代码,它简化了
<DockPanel Background="#344755">
<TextBlock DockPanel.Dock="Top" Text="Header" Foreground="White"/>
<TreeView x:Name="treeV">
<TreeViewItem Header="General" />
<TreeViewItem Header="General2" />
<TreeViewItem Header="General3" />
<TreeViewItem Header="General4" />
</TreeView>
<Separator/>
<ScrollViewer VerticalScrollBarVisibility="Auto">
<ItemsControl>
<ItemsControl.ItemTemplate>
<DataTemplate>
<CheckBox HorizontalAlignment="Right">Something</CheckBox>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
</DockPanel>
或者如果你真的没有一个集合将items控件绑定到
<DockPanel Background="#344755">
<TextBlock DockPanel.Dock="Top" Text="Header" Foreground="White"/>
<TreeView x:Name="treeV">
<TreeViewItem Header="General" />
<TreeViewItem Header="General2" />
<TreeViewItem Header="General3" />
<TreeViewItem Header="General4" />
</TreeView>
<Separator/>
<ScrollViewer VerticalScrollBarVisibility="Auto">
<StackPanel>
<CheckBox HorizontalAlignment="Right">Something</CheckBox>
<CheckBox HorizontalAlignment="Right">Something</CheckBox>
<CheckBox HorizontalAlignment="Right">Something</CheckBox>
<CheckBox HorizontalAlignment="Right">Something</CheckBox>
<CheckBox HorizontalAlignment="Right">Something</CheckBox>
...
</StackPanel>
</ScrollViewer>
</DockPanel>