2017-02-19 7 views
-1

Я хочу, чтобы мой DataGrid занимал все доступное пространство в доступном окне. Однако, это не совсем так делать:DataGrid не изменяется должным образом при изменении размера экрана

Not maximized
Maximized

(К сожалению, я не позволил вставлять картинки, так StackOverflow поместим ссылку на него, а)

Это мой вся Windows' XAML:

<Window x:Class="BPS.View.MainView" 
     x:Name="MainViewWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:BPS.View" 
     xmlns:cal="http://www.caliburnproject.org" 
     mc:Ignorable="d" Title="{Binding WindowTitle}" 
     WindowStartupLocation="CenterScreen" Height="539.2" Width="768"> 

    <Grid x:Name="MainGrid" IsEnabled="{Binding MainGridIsEnabled}"> 
    <DataGrid x:Name="MainDataGrid" 
        cal:Message.Attach="[Event MouseRightButtonUp] = [Action DataGridRightMouseClickEvent($eventArgs)]" 
        ItemsSource="{Binding MainGridItemsSource}" AutoGenerateColumns="False" Margin="10,23,10.6,-477.6" 
        HorizontalContentAlignment="Center" VerticalContentAlignment="Center" 
        HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible"> 
      <DataGrid.Columns> 
       <DataGridTextColumn Binding="{Binding Path=id}" Width="Auto" Header="ID" CanUserResize="True" 
            IsReadOnly="True" /> 
       <DataGridTextColumn Binding="{Binding Path=name}" Width="Auto" Header="Name" 
            CanUserResize="True" IsReadOnly="True" /> 
       <DataGridTextColumn Binding="{Binding Path=age}" Width="Auto" Header="Age" 
            CanUserResize="True" IsReadOnly="True" /> 
      </DataGrid.Columns> 
     </DataGrid> 
    </Grid> 
</Window> 

Я ничего не делать дальше в стороне от этих атрибутов (предполагается сделать максимально DataGrid в полноэкранном режиме) в Dat aGrid. Что мне не хватает?

+0

Что такое контейнер вашего DataGrid (внешнего элемента, который содержит DataGrid)? –

+0

@MohammadDehghan Это сетка. Я обновил вопрос. –

ответ

0

Поместите DataGrid прямо в корневой элемент Grid и удалите поля.

Затем оно заполнит все окно. Вы можете подтвердить это, установив Background свойство DataGrid:

<Window x:Class="WpfApplication1.Window1" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:WpfApplication1" 
     mc:Ignorable="d" 
     Title="Window1" Height="300" Width="300"> 
    <Grid> 
     <DataGrid x:Name="MainDataGrid" 
       Background="Green" 
       ItemsSource="{Binding MainGridItemsSource}" AutoGenerateColumns="False" 
       HorizontalContentAlignment="Center" VerticalContentAlignment="Center" 
       HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible"> 
      <DataGrid.Columns> 
       <DataGridTextColumn Binding="{Binding Path=id}" Width="Auto" Header="ID" CanUserResize="True" 
           IsReadOnly="True" /> 
       <DataGridTextColumn Binding="{Binding Path=name}" Width="Auto" Header="Name" 
           CanUserResize="True" IsReadOnly="True" /> 
       <DataGridTextColumn Binding="{Binding Path=age}" Width="Auto" Header="Age" 
           CanUserResize="True" IsReadOnly="True" /> 
      </DataGrid.Columns> 
     </DataGrid> 
    </Grid> 
</Window> 
+0

Я сделал это, ничего не изменилось. Когда я удалял поля, он как-то застрял в самой верхней части почти за окном. –

+0

Опубликовать разметку всего окна, если вы хотите, чтобы кто-то мог указать, что вы делаете неправильно ... – mm8

+0

Я сделал это в главном посте. Пожалуйста, проверьте это. –

0

Это не о DataGrid, потому что его HorizontalAlignment и VerticalAlignment устанавливаются Stretch по умолчанию и HorizontalContentAlignment и VerticalContentAlignment (в вашем Xaml) не играют никакой роли в ОрганизацияDataGrid.

Прежде всего, следует посмотреть тип контейнера DataGrid. Если это что-то вроде StackPanel или DockPanel, это проблема. Измените их. Однако, это что-то вроде Grid, DockPanel, Border, Window, ... вы должны проверить их свойства (HorizontalAlignments и т. Д.), А также их контейнеры.

+0

Это внутри сетки. См. Обновленное сообщение. –

+0

Единственный способ воспроизвести вашу проблему - установить Margin = "10,23,10.6, + 477.6" (отметьте знак +). Убедитесь, что это не так. сожалею – Ron

Смежные вопросы