2012-02-03 58 views
-1

我有一個問題,使網格(用戶列表)不能垂直延伸到停靠面板的整個可用空間。網格不能延伸到整個DockPanel

我的簡化網格是在一個用戶控件:

<DockPanel Background="Yellow"> 
    <ContentControl Content="{Binding UserView}" Background="Red"/> 
</DockPanel> 

主窗口後面的視圖模型通過用戶視圖返回正確的用戶控件:作爲

<Grid Name="MainGrid" Background="Black"> 
    <Grid.RowDefinitions> 
      <RowDefinition Height="*" /> 
    </Grid.RowDefinitions> 
    <DataGrid Name="UserDataGrid" ItemsSource="{Binding UsersProfiles, Mode=OneWay}" 
       AutoGenerateColumns="False" Margin="5" Grid.Row="0"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="User Id" Binding="{Binding UserIdentifier}" 
            Width="100" IsReadOnly="True" /> 
     </DataGrid.Columns> 
    </DataGrid> 

我的窗口是一樣簡單。 網格水平延伸但不垂直。爲什麼?

+0

的問題可能是DockPanel中本身不被垂直拉伸到它的容器中。我建議:第一,你添加一個'DockPanel.Dock ='屬性到'ContentControl'元素,看看是否有差別。 – Jay 2012-02-03 16:01:04

+0

你確定它沒有垂直拉伸嗎?更改'DataGrid'的'Background'顏色進行測試。 DataGrid行不會伸展,但DataGrid本身會。如果你想將行垂直伸展你要麼需要實現自己的'Template',或者使用不同的控制,如'ItemsControl'其'ItemsPanel'設置爲你的'Grid' – Rachel 2012-02-06 15:27:25

回答

0

您可能只需在DockPanel上指定LastChildFillTrue即可。否則,它可能是在DataGrid不會調整,因爲它的設計沒有采取一切可用的垂直空間。

在後一種情況下,你可以這樣做:

<DataGrid> 
    <DataGrid.ItemsPanel> 
     <ItemsPanelTemplate> 
      <Grid /> 
     </ItemsPanelTemplate> 
    </DataGrid.ItemsPanel> 
</DataGrid> 
+0

與 沒有成功<背景DockPanel中= 「黃色」 LastChildFill = 「真」> < DataGrid.ItemsPanel> 2012-02-04 12:32:27

+0

對不起,不正確的格式我是新手。試着用一個新的空白項目與我的代碼(沒有你的建議),它的工作原理。該死的刺激......這是一樣的 - 幾乎我的第一個項目更先進。 – 2012-02-04 13:05:28

0

發現了它。我的錯。我所有的xaml都有身高= 30的代碼。多麼糟糕的運氣!以複製/粘貼開始。謝謝你們的貢獻!