所以我是.NET和WPF的新手,并且希望有人可以告诉我我做错了什么。我有一个WPF应用程序,它基本上只是一个数据网格。对于我的生活,我无法弄清楚如何在父窗口改变大小时自动调整DataGrid的大小,而不必求助于编写一堆代码来监视窗口大小调整事件。在OS X / Cocoa / Interface Builder上,这是相当简单和直接的,我只能假设WPF具有类似的功能。
<Window x:Class="MyClass.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="358" Width="542">
<Grid>
<DataGrid x:Name="mydatagrid" ItemsSource="{Binding}" AutoGenerateColumns="true" Height="328" Width="534"/>
</Grid>
</Window>
答案 0 :(得分:0)
所以我想通过WPF Grid allow controls inside to auto size width/height
来解决这个问题修改强>: 所以要解决这些评论(抱歉这里仍然是新的)。我做错了,没有定义Grid.ColumnDefinitions(或RowDefinitions取决于你如何组织事物),并为Grid内部的控件指定Grid.Column(或Row)数字。这是一个包含2个DataGrids和一个GridSplitter的示例。您还应该在ColumnDefinition(或RowDefinition)中指定宽度(或行中的高度),而不是在控件本身中指定。
<Grid Height="Auto" Width="Auto">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<DataGrid x:Name="myDataGrid1" Grid.Column="0" Margin="0,0,0,0" ItemsSource="{Binding}" HeadersVisibility="Column" IsReadOnly="True" AutoGeneratingColumn="OnAutoGeneratingColumn"/>
<GridSplitter Grid.Column="1" Width="5" HorizontalAlignment="Center" VerticalAlignment="Stretch"/>
<DataGrid x:Name="myDataGrid2" Grid.Column="2" Margin="0,0,0,0" ItemsSource="{Binding}" HeadersVisibility="Column" IsReadOnly="True" AutoGeneratingColumn="OnAutoGeneratingColumn"/>
</Grid>