Некоторые элементы управления не изменяют размер окна правильно, строка состояния создает пробелы без какой-либо причины. - PullRequest
0 голосов
/ 13 мая 2019

Мне нужно приклеить содержимое к сторонам окна, также хотелось бы добавить gridsplitter, чтобы изменить размер внутреннего контроля, и строка состояния создает пробелы. Например, размер сетки не будет изменяться по вертикали относительно нижней части окна. В настоящее время я еще не знаю причины или решения, начинающего ослеплять код. Я мог бы использовать вторую пару глаз.

Изменение высоты на MinHeights, использование Grid-контейнеров и т. Д. Практически все, что я мог найти и придумать, включая просмотр кода ...

<Window x:Class="Teachers_Lounge.MainWindow"
        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:Teachers_Lounge"
        mc:Ignorable="d"

        Title="Teachers Lounge" 
        Height="625" 
        Width="1525" 
        MinHeight="625" 
        MinWidth="1525" 

        KeyDown="Window_KeyDown" 
        Closing="Window_Closing" Loaded="Window_Loaded">

    <Window.Resources>
        <DataTemplate x:Key="CalendarTemplate">
            <Grid Margin="1">
                <Grid.RowDefinitions>
                    <RowDefinition Height="20" />
                    <RowDefinition Height="20" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="265" />
                    <ColumnDefinition Width="50" />
                </Grid.ColumnDefinitions>

                <DockPanel Grid.Row="0" Grid.Column="0">
                    <TextBlock FontWeight="Bold" Text="Name:" DockPanel.Dock="Left" Margin="5,0,10,0" />
                    <TextBlock Text="" />
                    <TextBlock Text="{Binding EventName}" Foreground="Green" FontWeight="Bold" />
                </DockPanel>
                <DockPanel Grid.Row="1" Grid.Column="0">
                    <TextBlock FontWeight="Bold" Text="Date:" Foreground="DarkGray" DockPanel.Dock="Left" Margin="5,0,5,0" />
                    <TextBlock Text="{Binding EventDateTime}" />
                </DockPanel>
                <Grid Grid.Column="1" Grid.RowSpan="2" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="-5,0,5,0">
                    <Button x:Name="EditEvent_Button" Width="40" Height="15" Margin="0,5,0,0" VerticalAlignment="Top" BorderThickness="0" Background="LightGray" CommandParameter="{Binding}" Command="{Binding ElementName=Window, Path=OnClickEditEvent}" Click="EditEvent_Button_Click">
                        <TextBlock Margin="0, -2">Edit</TextBlock>
                    </Button>
                    <Button x:Name="DeleteEvent_Button" Width="40" Height="15" Margin="0,20,0,5" VerticalAlignment="Bottom" BorderThickness="0" Background="LightGray" CommandParameter="{Binding}" Command="{Binding ElementName=Window, Path=OnClickDeleteEvent}" Click="DeleteEvent_Button_Click">
                        <TextBlock Margin="0, -2">Delete</TextBlock>
                    </Button>
                </Grid>
            </Grid>
        </DataTemplate>
    </Window.Resources>

    <Grid MinHeight="586" VerticalAlignment="Top">
        <Grid.RowDefinitions>
            <RowDefinition Height="50" />
            <RowDefinition Height="*" />
            <RowDefinition Height="20" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="360" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <TextBox x:Name="DateAndTime" Grid.Row="0" Grid.Column="0" HorizontalAlignment="Left" Height="30" Margin="10,10,0,0" TextWrapping="Wrap" Text="dddd dd mmmm HHh" VerticalAlignment="Top" Width="350" FontSize="20" IsEnabled="False"/>

        <TextBox x:Name="Topic" Grid.Row="0" Grid.Column="1" Margin="10,10,77,10" TextWrapping="Wrap" Text="Topic" FontSize="20" FontWeight="Bold" KeyDown="Topic_KeyDown" LostFocus="Topic_LostFocus" />
        <Button x:Name="Settings_Button" Grid.Column="1" Margin="0,10,10,10" FontWeight="Bold" Click="Settings_Button_Click" HorizontalAlignment="Right" Width="62">Settings</Button>

        <Grid Grid.Row="1" Grid.Column="0" 
              Margin="10,0,0,0">
            <Grid.RowDefinitions>
                <RowDefinition Height="20" />
                <RowDefinition Height="489*" />
                <RowDefinition Height="7*"/>
            </Grid.RowDefinitions>

            <Menu BorderThickness="1 1 1 0" BorderBrush="Black">
                <Menu.ItemsPanel>
                    <ItemsPanelTemplate>
                        <DockPanel HorizontalAlignment="Stretch"/>
                    </ItemsPanelTemplate>
                </Menu.ItemsPanel>
                <MenuItem Header="New Event" Click="NewReplacement_Click" />
            </Menu>
            <ListBox x:Name="CalendarList" Grid.Row="1"
                     BorderThickness="1 0 1 1" BorderBrush="Black"
                     HorizontalAlignment="Left" MinWidth="350" MinHeight="485" VerticalAlignment="Top"
                     ItemsSource="{Binding Tables[0]}" ItemTemplate="{StaticResource CalendarTemplate}" KeyDown="CalendarList_KeyDown"/>
        </Grid>



        <Grid Grid.Row="1" Grid.Column="1"
              HorizontalAlignment="Left" MinHeight="485" MinWidth="1072" VerticalAlignment="Top" Margin="10,0,10,0">
            <Grid.RowDefinitions>
                <RowDefinition Height="20" />
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>

            <Menu BorderThickness="1 1 1 0" BorderBrush="Black">
                <Menu.ItemsPanel>
                    <ItemsPanelTemplate>
                        <DockPanel HorizontalAlignment="Stretch"/>
                    </ItemsPanelTemplate>
                </Menu.ItemsPanel>
                <MenuItem Header="?" Click="ExcelPreviousDate_Click" />
                <MenuItem Header="?" Click="ExcelPreviousWeek_Click" />
                <MenuItem x:Name="ExcelActiveTimewindow" Header="Week XX, Date dd-MM-yy" IsEnabled="False" />
                <MenuItem Header="?" Click="ExcelNextWeek_Click" />
                <MenuItem Header="?" Click="ExcelNextDate_Click" />
                <Separator />
                <MenuItem Header="New Replacement" Click="NewReplacement_Click" />
                <MenuItem Header="Delete Replacements" HorizontalAlignment="Right" Click="DeleteReplacements_Click" />
            </Menu>

            <DataGrid Name="ExcelDataView" Grid.Row="1"
                      BorderThickness="1 0 1 1" BorderBrush="Black"
                      AutoGenerateColumns="False" 
                      ColumnWidth="*"  
                      RowBackground="WhiteSmoke"  
                      Background="LightBlue"
                      CanUserAddRows="False"
                      BeginningEdit="ExcelDataView_BeginningEdit"
                      CellEditEnding="ExcelDataView_CellEditEnding"                       
                      RowEditEnding="ExcelDataView_RowEditEnding" 
                      SelectionChanged="ExcelDataView_SelectionChanged"
                      MinWidth="1077" MinHeight="485" HorizontalAlignment="Left" VerticalAlignment="Top">
                <DataGrid.ColumnHeaderStyle>
                    <Style TargetType="DataGridColumnHeader">
                        <EventSetter Event="Click" Handler="OnExcelHeaderClicked" />
                    </Style>
                </DataGrid.ColumnHeaderStyle>
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Time" Binding="{Binding TimeText, Mode=TwoWay}" Width="70" CanUserSort="False" />
                    <DataGridTextColumn Header="Replaced User" Binding="{Binding ReplacedUser, Mode=TwoWay}" Width="140" CanUserSort="False" />
                    <DataGridTextColumn Header="Replacement User" Binding="{Binding ReplacementUser, Mode=TwoWay}" Width="140" CanUserSort="False" />
                    <DataGridTextColumn Header="Class" Binding="{Binding Class, Mode=TwoWay}" Width="170" CanUserSort="False" />
                    <DataGridTextColumn Header="Location" Binding="{Binding Location, Mode=TwoWay}" Width="170" CanUserSort="False" />
                    <DataGridTextColumn Header="Info" Binding="{Binding AdditionalInfo, Mode=TwoWay}" CanUserSort="False" />
                    <DataGridCheckBoxColumn Header="Mark" Binding="{Binding Marked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" CanUserSort="False" Width="50">
                        <DataGridCheckBoxColumn.CellStyle>
                            <Style>
                                <EventSetter Event="CheckBox.Checked" Handler="OnExcelDeleteColumnChecked"/>
                                <EventSetter Event="CheckBox.Unchecked" Handler="OnExcelDeleteColumnUnchecked"/>
                            </Style>
                        </DataGridCheckBoxColumn.CellStyle>
                    </DataGridCheckBoxColumn>
                </DataGrid.Columns>
            </DataGrid>
        </Grid>

        <Menu Grid.Row="3" Grid.ColumnSpan="2"
              BorderThickness="0 1 0 0" BorderBrush="Black" IsEnabled="False"
              VerticalAlignment="Bottom" Height="20">
            <Menu.ItemsPanel>
                <ItemsPanelTemplate>
                    <DockPanel HorizontalAlignment="Stretch"/>
                </ItemsPanelTemplate>
            </Menu.ItemsPanel>
            <MenuItem MinWidth="1111" BorderThickness="0">
                <MenuItem.Header>
                    <TextBlock x:Name="StatusbarMessage" 
                               HorizontalAlignment="Left" VerticalAlignment="Center" 
                               TextAlignment="Left" />
                </MenuItem.Header>
            </MenuItem>
            <MenuItem BorderThickness="0"
                      HorizontalAlignment="Right" HorizontalContentAlignment="Right" Width="350" >
                <MenuItem.Header>
                    <TextBlock x:Name="StatusbarInfo" 
                               VerticalAlignment="Center" Width="335" 
                               TextAlignment="Right" />
                </MenuItem.Header>
            </MenuItem>
        </Menu>
    </Grid>
</Window>

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

...