【发布时间】:2012-02-26 05:46:10
【问题描述】:
我在使网格(用户列表)没有垂直延伸到停靠面板的整个可用空间时遇到问题。
我的简化网格在 UserControl 中:
<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>
我的窗口很简单:
<DockPanel Background="Yellow">
<ContentControl Content="{Binding UserView}" Background="Red"/>
</DockPanel>
主窗口后面的 ViewModel 通过 UserView 正确返回 userControl。 Grid 水平拉伸但不垂直拉伸。为什么?
【问题讨论】:
-
问题可能是 DockPanel 本身没有垂直拉伸到它的容器中。我建议您首先向
ContentControl元素添加一个DockPanel.Dock=属性,看看是否会有所不同。 -
你确定它不是垂直拉伸的吗?将
DataGrid的Background颜色更改为测试。 DataGrid Rows 不会拉伸,但 DataGrid 本身会。如果您希望行项目垂直拉伸,您需要实现自己的Template,或使用不同的控件,例如将ItemsPanel设置为Grid的ItemsControl设置为Grid
标签: wpf xaml layout user-controls grid