2010-06-30 36 views
1

首先我是XAML的新手,所以如果我做了一些愚蠢的事情,請原諒我。GridSplitter的問題沒有調整內容的大小

我有我的頁面剝離下來到下面的例子XAML(可以在XamlPad):

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:sys="clr-namespace:System;assembly=mscorlib" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480"> 
    <Grid ShowGridLines="True"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="200" MinWidth="150" /> 
      <ColumnDefinition /> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="3*" /> 
      <!--<RowDefinition Height="Auto" />--> 
      <RowDefinition MaxHeight="25" Height="25" MinHeight="25" /> 
      <RowDefinition Height="1*"/> 
     </Grid.RowDefinitions> 
     <Grid Grid.RowSpan="4" Grid.Row="0" Grid.Column="0" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" /> 
     <GridSplitter Grid.Row="0" Grid.RowSpan="4" Width="4" /> 
     <Frame > 
     </Frame> 
     <GridSplitter Grid.Row="0" Height="4" Grid.Column="1" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" /> 
     <Grid Grid.Column="2" Grid.Row="2" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/> 
     <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Grid.Column="2" Grid.Row="3"> 
      <Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch" /> 
     </ScrollViewer> 
    </Grid> 
</Page> 

我希望發生的是水平網格分路器來調整頂部面板,移動底網格(我想保持在25的高度)和Scrollviewer控制下來。

我已經嘗試把水平網格分離器放入它自己的行中,這會將內容向下移動,但它縮小了頂部網格的內容,而不是我正在尋找的內容。

任何建議,以便我做錯了嗎?這與比例高度有關嗎?

+0

請先嚐試下面的示例。如果你能更清楚地解釋最終結果和你不想看到的行爲,我可能會進一步提供幫助。 – 2010-08-23 12:16:44

回答

1

首先,您已將分隔符定義爲適用於多行和多列,但實際上它們必須具有自己的行或列,並且它們適用於相鄰的行/列,因此您處於正確的軌道上之前。

問題比例(星)行。爲了使分路器工作,至少有一個相鄰的行/列必須是固定的(像素)大小,否則它不會用鼠標進行調整,而是通過一些奇怪的比例移動進行調整。

我不理解你的「但它縮小了頂部網格的內容,這不是我要找的」評論「,所以它可能需要更多的解釋並且我做了一些猜測,但是XAML下面顯示的文件具有分離器的行爲:

<Grid ShowGridLines="True"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="191.5" /> 
      <ColumnDefinition Width="8.5"/> 
      <ColumnDefinition /> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="194" /> 
      <RowDefinition Height="0.148*"/> 
      <RowDefinition MaxHeight="25" Height="25" MinHeight="25" /> 
      <RowDefinition Height="0.852*"/> 
     </Grid.RowDefinitions> 
     <Grid Grid.RowSpan="4" Grid.Row="0" Grid.Column="0" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Grid.ColumnSpan="2" Margin="0,0,-0.5,0" /> 
     <sdk:GridSplitter Grid.Row="0" Grid.RowSpan="4" Grid.Column="1" HorizontalAlignment="Stretch" Margin="0.5,0,-0.5,0" /> 
     <Frame > 
     </Frame> 
     <sdk:GridSplitter Grid.Row="1" HorizontalAlignment="Stretch" Grid.ColumnSpan="3" /> 
     <Grid Grid.Column="2" Grid.Row="3" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="0.5,0,-1,0"/> 
     <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Grid.Column="2" Grid.Row="3" Margin="0.5,0,-1,0"> 
      <Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch" /> 
     </ScrollViewer> 
    </Grid> 
1

如果我正確理解您的問題。 你應該能夠從你的內部網格中取出VerticalAlignment =「Stretch」和Horizo​​ntalAlignment =「Stretch」並獲得你想要的。

網格劃分器不喜歡其他所有設置爲拉伸的Allignments的行(或列)中的其他內容。

+0

你是說這個控件有一個錯誤嗎? – VoodooChild 2010-09-13 23:17:31

+0

我還沒有調查到足夠的話,但是按照我的定義,是的,我會嘗試發佈controll的行爲不如預期的各種情況。 – 2010-09-22 23:56:31

+0

這是[one](http://stackoverflow.com/questions/21002846/weird-gridsplitter-resizing-behaviour?noredirect=1#comment31606324_21002846) – Sidewinder94 2014-01-21 10:29:54