WPF - 实时调整窗口/网格内部控件的大小

时间:2014-04-30 06:19:53

标签: wpf resize wpfdatagrid

所以我是.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>

1 个答案:

答案 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>