2012-09-11 51 views
0

我有什麼:網格是左對齊的。如何始終顯示第二列,如果第一列。太寬了?

<Grid HorizontalAligment="Stretch"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="16" /> 
    </Grid.ColumnDefinitions> 
    <TextBlock Text="Text" Grid.Column="0" /> 
    <Grid Background="Black" VerticalAligment="Stretch" Grid.Column="1"> 
    <TextBlock Text="*" /> 
    </Grid> 
</Grid> 

結果:

__________ 
|  | 
|Text * | 
|________| 

我有一個問題:當文本太寬,*成爲關閉屏幕。

__________ 
|  | 
|long Tex|t * 
|________| 

那麼,如何確定,如果它成爲戲外*應該覆蓋的Text的一部分?

__________ 
|  | 
|long Te*|t 
|________| 

第二個問題:無法使用MaxWidth爲Text,因爲Grid具有動態寬度。

UPD:如果我會用Width="*"第一列,我會得到這樣的:

__________ 
|  | 
|Text *| 
|________| 
+0

沒有辦法將第一列設置爲*修復此問題。你將第二列的寬度設置爲16,它會讓你感到驚訝,寬度會變大,16會被截斷? – Paparazzi

+0

@Blam,沒有什麼讓我吃驚。我想在第一列附近製作第二列,當第一列太寬時,不要離開屏幕。第一列中的文本塊具有文本綁定,第二欄中的文本塊永遠不會改變。 –

+0

你需要兩張桌子,把它們放在一個容器中,允許重疊,並將第二個Z軸設置在第一個桌子的前面,並將第二個桌子的位置固定。這樣,無論第一張桌子的大小如何,它都不會移動第二張桌子。 – Bahamut

回答

0

使用以下

<ColumnDefinition Width="*" /> 

而不是

<ColumnDefinition Width="Auto" /> 

編輯: 以下是完整的代碼:

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

     <TextBlock Text="123 Text Long. Really Text Long. Really Text Long. Really Text Long. Really Text Long. Really Text Long. Really Text Long. Really 
        Text Long. Really Text Long. Really Text Long. Really Text Long. Really Text Long. Really Text Long. Really Text Long. Really Text Long. Really 
        Text Long. Really Text Long. Really Text Long. Really Text Long. Really Text Long. Really Text Long. Really 
        " Grid.Column="0"/> 
     <Grid Grid.Column="1"> 
       <TextBlock Text="*" /> 
      </Grid> 
    </Grid> 

輸出結果如下。 123是文本的開始。這不是你所期望的嗎?

The Output

+0

我想在第一列的內容附近創建第二列(更新問題)。 –

+0

編輯以顯示更多詳細信息 – LadderLogic

+0

如果文本太短(例如只是「123」),那麼「*」不會在右側? –

相關問題