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



所以我是.NET和WPF的新手,希望有人能告诉我我做错了什么。我有一个WPF应用程序,它基本上只是一个数据网格。就我而言,我不知道如何在父窗口更改大小时让DataGrid自动调整大小,而不必编写一堆代码来监控窗口调整大小事件。在OSX/Cocoa/InterfaceBuilder上,这是相当简单和直接的,我只能假设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>

所以我发现了这一点,这要归功于WPF网格允许内部控件自动调整的宽度/高度

编辑:因此,为了回应评论(很抱歉,这仍然是新的)。我做错了什么,没有定义Grid.ColumnDefinitions(或RowDefinitions,具体取决于组织方式),也没有为网格内的控件指定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>

相关内容

最新更新