2011-02-02 42 views
3

當我使用跨越控件的列和列的SharedSizeGroup創建網格時,網格會'心智'地跳動並最大化cpu核心。在Wpf網格中將SharedSizeGroup與ColumnSpan結合使用

我確定有一個很好的理由,爲什麼這不起作用,但我想不起來!我還能如何實現這種尺寸佈局?

<Grid IsSharedSizeScope="True"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto" SharedSizeGroup="Columns"/> 
      <ColumnDefinition Width="Auto" SharedSizeGroup="Columns"/> 
     </Grid.ColumnDefinitions> 

     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
     </Grid.RowDefinitions> 

     <Label Grid.Column="0">Blah</Label> 
     <Label Grid.Column="1">Blah Blah Blah Blah</Label> 

     <Label Grid.Row="1" Grid.ColumnSpan="2">ajsgdeererajgsfdg dfg df gdfg djgsad</Label> 
    </Grid> 

回答

4

你所做的基本上是建立無限遞歸的佈局。

  • 要分享大小列首先需要計算自己的大小。
  • 然後,他們可以根據 較大的一個(可能是列1在這裏)同步。
  • 列0後膨脹到匹配 第1列的大小,所述第三標籤可以 現在在列中使用更多的空間
  • 因爲它轉移列,它 需要在列1變小, 允許空間列1縮小至 與其 內容所需的新空間相匹配。
  • 列1現在重新計算其大小(在第一個步驟開始)

SharedSizeGroup意在不同網格被用於保持元件的對準被以某種方式分離成不同的容器,如不同的模板列表項或標題行。如果你需要一個沒有拉伸的等分行,你可以使用其他的東西,比如*大小的列或者一個UniformGrid。

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="Auto"/> 
    </Grid.RowDefinitions> 

    <UniformGrid Rows="1" HorizontalAlignment="Left"> 
     <Label >Blah</Label> 
     <Label >Blah Blah Blah Blah</Label> 
    </UniformGrid> 

    <Label Grid.Row="1">ajsgdeererajgsfdg dfg df gdfg djgsad</Label> 
</Grid> 
+0

完美謝謝! – 2011-02-03 09:01:36