2014-01-16 81 views
0

我有mainGrid包含scrollviwer包含stackPanelContentWPF Datagrid大小伸展問題

我的火腿增加了一個兩列的網格,每列包含一個DataGrid。問題是DataGrid1是空的,DataGrid2包含數據。但是我的DataGrid1在高度上也相對於DataGrid2有所擴展。爲什麼這樣的行爲

enter image description here

下面是代碼:

var datagridDetails = new DataGrid { IsReadOnly = true, AutoGenerateColumns = false }; 
var columnDetails = new DataGridTextColumn 
{ 
    Header = "Details", 
    MinWidth = 400, 
    Width = StackPanelContent.ActualWidth/2 - 8, 
    CanUserSort = false, 
    CanUserResize = false 
}; 
datagridDetails.Columns.Add(columnDetails); 

var datagridTopic = new DataGrid { IsReadOnly = true, AutoGenerateColumns = false}; 
var columnTopic = new DataGridTextColumn 
{ 
    Header = "Topic", 
    MinWidth = 400, 
    Width = StackPanelContent.ActualWidth/2 - 8, 
    CanUserSort = false, 
    CanUserResize = false, 
    Binding = new Binding("Title") 
}; 
datagridTopic.Columns.Add(columnTopic); 
datagridTopic.ItemsSource = topics; 

var myGrid = new Grid(); 
var col1 = new ColumnDefinition(); 
var col2 = new ColumnDefinition(); 
myGrid.ColumnDefinitions.Add(col1); 
myGrid.ColumnDefinitions.Add(col2); 
StackPanelContent.Children.Add(myGrid); 

Grid.SetColumn(datagridDetails, 0); 
myGrid.Children.Add(datagridDetails); 

Grid.SetColumn(datagridTopic, 1); 
myGrid.Children.Add(datagridTopic); 

回答

3

你應該改變VerticalAlignmentDataGridTop,而不是Stretch


爲什麼會發生?

記住上一個垂直排列StackPanel所有的子控件得到水平捉襟見肘。另一方面水平對齊StackPanel - 垂直拉伸子元素。 StackPanel通過將其子控件的相應屬性設置爲Stretch來完成此操作。

MSDN

+0

感謝該做的伎倆,但我仍然不知道爲什麼會在第一名發生。 – ADi

+0

我正在閱讀你提供的msdn文章爲什麼發生,謝謝。 – ADi

+1

@Bsienn答覆已更新。 –

1

申報數據網格如下:

var datagridDetails = new DataGrid { IsReadOnly = true, AutoGenerateColumns = false, VerticalAlignment = VerticalAlignment.Top}; 
+0

@Besienn:感謝您的編輯。這是一個複製粘貼錯誤。 –