2014-04-30 5 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

Edit: Так для решения комментарии (жаль об этом до сих пор новый здесь). То, что я делал неправильно, не определяло Grid.ColumnDefinitions (или RowDefinitions в зависимости от того, как вы организуете вещи), и указав номера Grid.Column (или Row) для элементов управления внутри Grid. Вот пример с 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> 
Смежные вопросы