2014-04-30 106 views
0

所以我对.NET和WPF很陌生,希望有人能告诉我我做错了什么。我有一个基本上只是一个数据网格的WPF应用程序。对于我来说,无论何时父窗口改变大小,我都无法弄清楚如何让DataGrid自动调整大小,而不必诉诸写一堆代码来监视窗口大小调整事件。在OS X/Cocoa/Interface Builder上,这非常简单直接,我只能假设WPF具有类似的功能。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

所以我想通了感谢WPF Grid allow controls inside to auto size width/height

编辑: 因此,要解决的意见(有关这仍然是新来的抱歉)。我做错了什么,没有定义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> 
相关问题