2013-02-21 39 views
0

在一個Page派生類,我有一些嵌套網格。GridSplitter調整大小錯誤地

我已將ColumnDefinition更改爲寬度爲「*」的某些像素(即大約5), 的寬度。

所有元素都Width="Auto"

這裏是我的分配器:

<Grid Margin="10" 
      HorizontalAlignment="Stretch" 
      VerticalAlignment="Stretch" 
      Grid.Background="SpringGreen"> 

     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="5" /> 
      <ColumnDefinition Width="5*" /> 
      <ColumnDefinition Width="5" /> 
      <ColumnDefinition Width="5" /> 
      <ColumnDefinition Width="5" /> 
      <ColumnDefinition Width="5*" /> 
      <ColumnDefinition Width="5" /> 

     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="5*" /> 

     </Grid.RowDefinitions> 

     <GridSplitter Grid.Row="1" 
         Grid.Column="3" 
         Width="Auto" 
         Height="Auto" 
         Margin="0" 
         HorizontalAlignment="Stretch" 
         VerticalAlignment="Stretch" 
         Background="Red" 
         BorderThickness="1,0" 
         Cursor="SizeWE" 
         RenderTransformOrigin="-1,1" 
         ShowsPreview="True" /> 
    </Grid> 

所以,問題是,它幾乎沒有調整大小的左側,而是非常的權利。 即使在全屏模式下,它也不依賴於窗口大小,分離器僅允許 左側的某些像素。

CNC中 有沒有,我沒有發現自己(在谷歌)的任何已知問題? 任何人都會遇到類似的奇怪行爲?

-edit update- 找到網格重現問題的最小定義。

+0

您可以顯示網格中的XAML,好嗎? – 2013-02-21 11:40:14

+0

爲網格添加了XAML零件 – 2013-02-21 13:04:04

回答

2

您有兩個* -width列之間寬度5的3列。 GridSplitter在這些中間。它通過調整前一列的大小(即5個像素列中的第一個)來工作。您無法調整到左側,因爲該列只有5個像素寬。

記住和Column屬性是從零開始的。

+0

首先:您是對的。我可以用問題中更新的代碼重現行爲。但是:我怎樣才能改變它來調整甚至「*」列?如果我調整到正確的位置,爲什麼它會起作用?爲什麼我的分路器和「*」列之間沒有列? – 2013-02-21 14:20:37

+0

那些''「'應該是*列,不能編輯它... – 2013-02-21 14:28:42

+0

如果你調整到右側,它會工作,因爲它調整左側5px列並將其擴展到任何你喜歡的大小。嘗試用紅色填充該列,看看會發生什麼。爲什麼不能在分離器和可調整大小的列之間放置一列?因爲這不是'GridSplitter'的工作方式 - 它位於它調整大小的兩列之間。它看起來像你正在使用這些其他5px列提供填充,邊距或邊框:如果是這樣,利用適當的邊距,你不應該需要這些細列。 – 2013-02-21 15:39:32