在WPF项目中,我想将DataGrid停靠在窗口的底部,以便在调整窗口大小时能够使用更多的DataGrid。像这样:
我怎么做?我所有的DockPanel尝试都失败了。
当前尝试在这里:
<Window x:Class="Foo.SQLDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:c="clr-namespace:Foo.Controls"
Title="test" ResizeMode="CanResize" Width="400" Height="400">
<StackPanel Orientation="Vertical" Height="Auto" Width="Auto">
<StackPanel Orientation="Vertical">
<Label Content="SQL" HorizontalAlignment="Left"/>
<TextBox Width="377" Height="100" Name="txtSQL"/>
<Button Content="Run SQL" Click="Button_Click_1" />
</StackPanel>
<Label Content="Result" HorizontalAlignment="Left"/>
<ScrollViewer Width="Auto" Height="180" DockPanel.Dock="Right,Bottom"
ScrollViewer.CanContentScroll="True"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Auto">
<DataGrid x:Name="dataResult" />
</ScrollViewer>
</StackPanel>
</Window>
但是,scrollviewer + datagrid的高度将无法适应。
最佳答案
首先,在没有DockPanel作为父母的情况下使用DockPanel.Dock
并没有多大作用。
在我的示例中,我将您的根StackPanel
更改为DockPanel
,以便您可以随意使用。
我还使用了 DockPanel.LastChildFill 属性,该属性确保DockPanel的最后一个孩子将获得所有剩余空间:
<DockPanel LastChildFill="True">
<StackPanel Orientation="Vertical" DockPanel.Dock="Top">
<Label Content="SQL" HorizontalAlignment="Left"/>
<TextBox Width="377" Height="100" Name="txtSQL"/>
<Button Content="Run SQL" Click="Button_Click_1" />
</StackPanel>
<Label Content="Result" HorizontalAlignment="Left" DockPanel.Dock="Top"/>
<ScrollViewer DockPanel.Dock="Bottom,Right"
ScrollViewer.CanContentScroll="True"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Auto">
<DataGrid x:Name="dataResult" />
</ScrollViewer>
</DockPanel>
最后,为了使其真正在所有剩余空间上伸展,我删除了您设置的
Height
属性,因为这阻止了它伸展。关于wpf - 将可调整大小的WPF DataGrid停靠在窗口底部,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15356400/