2011-07-13 21 views
13

我有3列和2行在WPF如何使一個數據網格適合窗口高度

 <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto"/> 
      <ColumnDefinition Width="10"/> 
      <ColumnDefinition Width="*"/> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 

我左下單元的網格,我有一個數據網格,的AutoGenerateColumns =真其可以加載多行。我想要做的是將數據網格高度最大化以適應窗口,並讓用戶能夠使用數據網格滾動條上下滾動行。

會發生什麼情況是,窗口底部的DataGrid中流動,即使我設置

ScrollViewer.VerticalScrollBarVisibility="Visible" 
DataGrid的

,滾動條沒有任何作用,行向下流動。不知何故數據網格不會受到限制...

怎麼辦?

+1

給數據網格一些寬度可以解決你的問題...如果你不想硬編碼寬度,你可以做一些元素綁定來實現這一點。 .. – Bathineni

+0

我很擔心身高...... – GilShalit

+0

對不起..我只是談論身高..它的一個錯字...給一些身高的數據網格可能會解決你的問題......如果你不想硬代碼高度,你可以做一些o f元素綁定來實現這一點.. – Bathineni

回答

31

嘗試設置你的DataGrid的HorizontalAlignment=StretchVerticalScrollBarVisibility=Auto

如果不工作,你可能還需要電網的高度綁定到窗口高度,使得它不會自動增長,以適應其內容。通常我使用Height="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=ActualHeight}"(這可能是RenderSize.ActualHeight,而不是僅僅ActualHeight ......我忘了。

另一種方法是使用的DockPanel而不是Grid,因爲該控件不自動增長,以適應其內容。相反,它將伸展它的最後一個孩子,以填補剩餘的空間。

+0

有趣的想法,這將導致水平滾動條不顯示。我會給他們一個嘗試並回報:-) – GilShalit

+0

綁定技術就像一個魅力,謝謝!這是你寫的ActualPath。順便說一句,我如何將某些東西綁定到Path值的一小部分? Path = ActualPath/2似乎不起作用。 – GilShalit

+1

@Gilshalit你需要使用一個轉換器爲 – Rachel

1

您必須定義DataGrid與*所在的列和行。 你說它在左下角的單元格上。該行是好的,但你的專欄有Width="Auto"

AutoGenerateColumns=True如果Width="Auto"給出一個混亂。

+0

請注意,即使您設置了'ScrollViewer.Horizo​​ntalScrollBarVisibility =「Auto」' – mauris