0

Я начинаю изучать WPF. Возникла проблема.

То, как выглядит мое приложение в редакторе отличается от того, как выглядит скомпилированное приложение. В окне обрезается часть справа и снизу.

Примеры:

Как сделать так, чтобы окно не обрезалось справа и снизу?

Код разметки:

<Window x:Name="MainWindow1" x:Class="Tic_tac_toe.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:Tic_tac_toe"
    mc:Ignorable="d"
    Title="Tic-tac-toe" Height="500" Width="500" ResizeMode="NoResize" WindowStartupLocation="CenterScreen">

<Window.Resources>
    <Style x:Key="MyButtonStyle1" TargetType="Button">
        <Setter Property="Background" Value="White"/>
        <Setter Property="BorderThickness" Value="0"/>
        <Setter Property="FontSize" Value="100"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Border Name="border" 
                        BorderThickness="0"
                        BorderBrush="White" 
                        CornerRadius="0" 
                        Background="{TemplateBinding Background}">
                        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter TargetName="border" Property="BorderBrush" Value="Black" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>

    </Style>
</Window.Resources>

<Grid x:Name="MainGird">
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>

    <Button x:Name="Button1_1" Style="{StaticResource MyButtonStyle1}" Content="" Grid.Column="1" HorizontalAlignment="Left" Margin="10,10,0,0" Grid.Row="1" VerticalAlignment="Top" Width="144" Height="137"/>
    <Button x:Name="Button1_0" Style="{StaticResource MyButtonStyle1}" Content="" Grid.Column="1" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="144" Height="137"/>
    <Button x:Name="Button2_0" Style="{StaticResource MyButtonStyle1}" Content="" Grid.Column="2" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="145" Height="137"/>
    <Button x:Name="Button2_1" Style="{StaticResource MyButtonStyle1}" Content="" Grid.Column="2" HorizontalAlignment="Left" Margin="10,10,0,0" Grid.Row="1" VerticalAlignment="Top" Width="145" Height="137"/>
    <Button x:Name="Button2_2" Style="{StaticResource MyButtonStyle1}" Content="" Grid.Column="2" HorizontalAlignment="Left" Margin="10,10,0,0" Grid.Row="2" VerticalAlignment="Top" Width="145" Height="137"/>
    <Button x:Name="Button1_2" Style="{StaticResource MyButtonStyle1}" Content="" Grid.Column="1" HorizontalAlignment="Left" Margin="10,10,0,0" Grid.Row="2" VerticalAlignment="Top" Width="144" Height="137"/>
    <Button x:Name="Button0_0" Style="{StaticResource MyButtonStyle1}" Content="" HorizontalAlignment="Left" VerticalAlignment="Top" Width="145" Height="137" Margin="10,10,0,0" />
    <Button x:Name="Button0_1" Style="{StaticResource MyButtonStyle1}" Content="" HorizontalAlignment="Left" Margin="10,10,0,0" Grid.Row="1" VerticalAlignment="Top" Width="145" Height="137"/>
    <Button x:Name="Button0_2" Style="{StaticResource MyButtonStyle1}" Content="" HorizontalAlignment="Left" Margin="10,10,0,0" Grid.Row="2" VerticalAlignment="Top" Width="145" Height="137"/>

    <Rectangle Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="451" VerticalAlignment="Top" Width="20" Grid.ColumnSpan="2" Margin="155,10,0,0" Grid.RowSpan="3" RadiusX="1" RadiusY="1"/>
    <Rectangle Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="451" VerticalAlignment="Top" Width="20" Grid.ColumnSpan="2" Margin="154,10,0,0" Grid.RowSpan="3" Grid.Column="1" RadiusX="1" RadiusY="1"/>
    <Rectangle Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="20" Margin="10,147,0,0" Grid.RowSpan="2" VerticalAlignment="Top" Width="474" Grid.ColumnSpan="3" RadiusX="1" RadiusY="1"/>
    <Rectangle Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="20" Margin="10,147,0,0" Grid.RowSpan="2" VerticalAlignment="Top" Width="474" Grid.ColumnSpan="3" Grid.Row="1" RadiusX="1" RadiusY="1"/>

</Grid>

flamy
  • 21
  • 4
  • приложите ваш код – Gardes Nov 08 '17 at 12:08
  • @Gardes, добавил – flamy Nov 08 '17 at 12:10
  • Да, редактор несовершенен и не всегда показывает то, как будет выглядеть окно в действительности. Если это самая большая проблема, поздравляю, считайте, что вам очень везёт. – VladD Nov 08 '17 at 12:14
  • @VladD, А как тогда самому добавить отступ справа и снизу? – flamy Nov 08 '17 at 12:16
  • @YuryPutimcev: Встречный вопрос — а какой layout вы хотите получить? – VladD Nov 08 '17 at 12:18
  • Используйте Margin/Padding для отступов. Например в корневом гриде: <Grid Margin="5" ... – Андрей NOP Nov 08 '17 at 12:19
  • @VladD, чтобы получилось так, как это выглядит в редакторе. Я делаю простенький проект - крестики нолики. – flamy Nov 08 '17 at 12:20
  • А за что минусы? Нормальный новичковый вопрос. – VladD Nov 08 '17 at 12:44

1 Answers1

1

Как-то у вас всё очень сложно. Предположу, что вам нужно просто вот такое:

<Grid Background="#FFF4F4F5"> <!-- цвет фона -->
    <Grid Margin="10"> <!-- внешний маргин -->
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition Height="10"/> <!-- внутренний маргин -->
            <RowDefinition/>
            <RowDefinition Height="10"/> <!-- внутренний маргин -->
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition Width="10"/> <!-- внутренний маргин -->
            <ColumnDefinition/>
            <ColumnDefinition Width="10"/> <!-- внутренний маргин -->
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>

        <Button Style="{StaticResource MyButtonStyle1}" Grid.Row="0" Grid.Column="0" />
        <Button Style="{StaticResource MyButtonStyle1}" Grid.Row="0" Grid.Column="2" />
        <Button Style="{StaticResource MyButtonStyle1}" Grid.Row="0" Grid.Column="4" />
        <Button Style="{StaticResource MyButtonStyle1}" Grid.Row="2" Grid.Column="0" />
        <Button Style="{StaticResource MyButtonStyle1}" Grid.Row="2" Grid.Column="2" />
        <Button Style="{StaticResource MyButtonStyle1}" Grid.Row="2" Grid.Column="4" />
        <Button Style="{StaticResource MyButtonStyle1}" Grid.Row="4" Grid.Column="0" />
        <Button Style="{StaticResource MyButtonStyle1}" Grid.Row="4" Grid.Column="2" />
        <Button Style="{StaticResource MyButtonStyle1}" Grid.Row="4" Grid.Column="4" />
    </Grid>
</Grid>
VladD
  • 206,799
  • Спасибо, это вполне решило мою проблему. – flamy Nov 08 '17 at 12:28
  • Хм, а зачем еще один Grid, если можно установить Background прямо в Window? – Андрей NOP Nov 08 '17 at 12:32
  • @YuryPutimcev: Посмотрите ещё вот этот ответ: https://ru.stackoverflow.com/a/573196/10105 – VladD Nov 08 '17 at 12:34
  • @Андрей: Ну это можно, но я ж не знаю, будет ли это прямо в окне, или появятся дополнительные контролы посередина. Так-то да, можно вместо внешнего грида взять и окно. – VladD Nov 08 '17 at 12:35