2

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の高さは適応しません。

4

2 に答える 2

7

まず第一にDockPanel.Dock、親としてDockPanelを持たずに使用しても、あまり効果がありません...

私の例では、ルートStackPanelをに変更したDockPanelので、希望どおりに機能します。
また、DockPanelの最後の子が残りのすべてのスペースを確実に取得できるようにするDockPanel.LastChildFillプロパティを使用しました。

<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設定したプロパティを削除しました。これにより、ストレッチがブロックされたためです。

于 2013-03-12T08:50:18.067 に答える
1

役に立つかどうか、またはあなたが正しい方法で質問していることを理解しているかどうかはわかりませんが、これを試しましたか?

<DataGrid DockPanel.Dock="Right, Bottom" VerticalAlignment="Bottom" HorizontalAlignment="Right" ></DataGrid>
于 2013-03-12T08:32:54.883 に答える