2015-10-01 221 views
1

我有一個WPFWindowDataGridGrid這樣的:WPF全寬的DataGridColumn在DataGrid的寬度

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" SizeToContent="WidthAndHeight" WindowStyle="ToolWindow" ResizeMode="NoResize"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto"/> 
     </Grid.ColumnDefinitions> 

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

     <TextBlock FontSize="20">Some header with some pretty longish text</TextBlock> 

     <DataGrid Grid.Row="1" Height="200"> 
      <DataGrid.Columns> 
       <DataGridTextColumn Header="Column1" Width="*"/> 
      </DataGrid.Columns> 
     </DataGrid> 

    </Grid> 
</Window> 

我想要DataGrid的寬度是至少寬度TextBlock,在這種情況下,由於GridColumnDefinition的寬度設置爲Auto

但不知何故,DataGridColumn的寬度是最小的(甚至不能調整大小),而我預計它的寬度將被填滿。目前,它看起來像這樣:
enter image description here

注意窗口必須是一個ToolWindow,它是SizeToContent設置爲WidthAndHeight

+0

對於DataGrid列,「Width =」*「'將無效。這似乎只適用於「Grid」的列。你爲什麼要這樣? – Hopeless

+0

什麼?我**不是**在DataGrid上使用'Width =「*」',我在'DataGridColumn'上使用它。爲什麼?因爲我希望'DataGridColumn'的寬度和它的容器一樣寬。 – QuantumHive

+0

對不起,我在Kaxaml中試過我的代碼,它的行爲與我在VS中嘗試的完全不同。有一句話要說:***有關'DataGrid'的糟糕設計***。我們幾乎不可能使用純XAML來做這件簡單的事情。我敢打賭,有一些使用代碼的方式(比如Converter),但我不會試圖用這種方式來解決這個問題。我會嘗試更純粹的XAML,如果我找到了一些我會重新添加我的答案。但現在我幾乎可以肯定這很難。 – Hopeless

回答

1

擺脫

<Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto"/> 
    </Grid.ColumnDefinitions> 

或者設置寬度爲*而不是汽車。

+0

如果我擺脫了'ColumnDefinition'(基本上是'Width =「*」',因爲這是Grid的列或行定義的默認值),那麼窗口的寬度將被最大化!這不是一個理想的效果,我寧願不在窗口上設置任何寬度或最大寬度。 – QuantumHive