2011-07-01 92 views
2

我在WPF的ItemsControl中使用IsSharedSizeScope以保持每行的寬度相同。Grid.IsSharedScopeSize與WPF Grid中的*列不兼容

不幸的是,這與Width='*'列不兼容,這會使'A B C'文本列溢出頁面末尾。

<Border BorderBrush="Red" BorderThickness="1"> 
    <StackPanel Grid.IsSharedSizeScope="True"> 

     <Grid HorizontalAlignment="Stretch"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto" SharedSizeGroup="G1"/> 
       <ColumnDefinition Width="Auto" SharedSizeGroup="G2" /> 
       <ColumnDefinition Width="*" SharedSizeGroup="G3" /> 
      </Grid.ColumnDefinitions> 

      <TextBlock Text="Col0" Grid.Column="0" Margin="0,0,5,0"/> 
      <TextBlock Text="Col1" Grid.Column="1" Margin="0,0,5,0"/> 

      <TextBlock Text="A B C D E F G H I J K L M N O P Q R S T U V W X Y Z" TextWrapping="Wrap" Grid.Column="2"/> 
     </Grid> 

    </StackPanel>     

</Border> 

這不會換,但如果你改變Grid.IsSharedScopeSizefalse那麼它的工作,但行是不平衡的。

是否有任何聰明的方法來實現這一點,或者我將不得不在'A B C'文本列上手動設置寬度?

(注:這實際上不是顯示一個ItemsControl內部)

回答

1

我剛剛意識到我不需要爲每列設置SharedSizeGroup。通過不爲*列設置它,我可以實現我需要的包裝,同時爲其他列保持一致的列寬。

不幸的是,我不認爲這將適用於*列不是網格中的最後一列,但我還沒有嘗試過。

相關問題