2012-08-14 69 views
0

我有一個網格控件,它已被分割列明智。邊界控制不填充到網格的行寬

<Grid HorizontalAlignment="Stretch"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition /> 
     <ColumnDefinition Width="80" /> 
     <ColumnDefinition Width="65" /> 
    </Grid.ColumnDefinitions> 
</Grid> 

我有內部0列邊界控制然而我面對邊境管制沒有完全填滿高達此列的寬度問題。邊框包含啓用了Wrapping的文本塊。如果文本塊中的文本大於寬度,則會將其包裹起來並延伸以填充可用空間。

但是,如果文本塊包含的小文本僅包含5-10個字符,則邊界控件不會延伸。

邊界控制顯式設置爲Horizo​​ntalAlignment和VerticalAlignment爲Stretch和Margin爲0,但邊界不會伸展到第0列中的空間可用?

+0

你可以在這裏發佈'Border'的定義嗎? – XAMeLi 2012-08-14 20:17:04

回答

-1
<DataGridTemplateColumn Width="150"> 
        <DataGridTemplateColumn.CellTemplate> 
         <DataTemplate> 
          <Border HorizontalAlignment="Stretch" 
            VerticalAlignment="Stretch" 
            BorderBrush="Red" 
            BorderThickness="2"> 
           <TextBlock Text="{Binding Name}" /> 
          </Border> 
         </DataTemplate> 
        </DataGridTemplateColumn.CellTemplate> 
       </DataGridTemplateColumn> 
+0

在我的情況下,我不需要使用DataGrid Control ...我將它放在頁面上的一個簡單網格 – Uday0119 2012-08-14 12:16:22

0

嘗試設置邊框的寬度。如果您想讓邊框佔用的空間,然後設置ColumnDefinition爲*(一)

+0

也許可以診斷一個奇怪的問題,但明確設置寬度,並且您可能正在開發WinForms 。 – erodewald 2012-08-15 21:29:24

+0

你沒有明確設置寬度,它會自動佔用空間,以便它支持可調整大小的窗口,並且UI不會混亂。 – 2012-08-16 03:12:47

0

相信你的第一列不能

<ColumnDefinition /> 

相反,我覺得應該是

<ColumnDefinition Width="*" /> 

ColumnDefinition.Width是GridLength類型。 GridLength是一個結構,它默認爲「Auto」。 Auto會嘗試佔用其子控制所需的最小空間量。 「*」的值表示將所有空間相對於其他*列。 (2 *列將佔用1 *列的空間的兩倍,我通常建議使用1到100之間的數字並將它們視爲百分比)。由於沒有其他列是*列,所以簡單的「*」意味着佔用所有剩餘空間。

你會認爲通過讓所有其他列固定寬度,它會強制第一列爲「*」,但我不認爲這是事實。

你可以閱讀更多關於GridLength這裏:

http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.gridlength.aspx

+0

我嘗試將寬度設置爲*,但沒有發生 – Uday0119 2012-08-15 15:22:06

+1

不,它默認爲[星號](http://msdn.microsoft.com/zh-cn/library/system.windows.controls.columndefinition.width.aspx )。 – erodewald 2012-08-15 21:28:24

0

請告訴我們您的邊界的定義。它是一個星形大小的列,但您可能已經給出Border一個HorizontalAlignmentVerticalAlignment這會否定默認行爲以填充父級的內容區域。我已經驗證了這個例子在Kaxaml中工作正常。

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition/> 
      <ColumnDefinition Width="80"/> 
      <ColumnDefinition Width="65"/> 
     </Grid.ColumnDefinitions> 
     <Border Background="LightGreen"/> 
     <TextBlock Grid.Column="1" Foreground="Blue" Text="Column01"/> 
     <TextBlock Grid.Column="2" Foreground="Red" Text="Column02"/> 
    </Grid> 
</Page>