在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的高度不会适应。
答案 0 :(得分:6)
首先,在没有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
属性,因为这会阻止它拉伸。
答案 1 :(得分:1)
不确定是否有用或者我理解你是否以正确的方式提问,但是你试过这个:
<DataGrid DockPanel.Dock="Right, Bottom" VerticalAlignment="Bottom" HorizontalAlignment="Right" ></DataGrid>