Почему цвет фона сетки покрывает все окно, если он установлен в ресурсах приложения? - PullRequest
0 голосов
/ 29 ноября 2018

Мне интересно, почему установка цвета фона сетки в ресурсах приложения приводит к тому, что все окно покрывается фоном сетки, даже если в файле основного окна XAML не указана панель сетки.

MainWindow.xaml:

<Window x:Class="TicTacToe.DesktopApp.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"
        mc:Ignorable="d"
        Title="Tic-tac-toe"
        Height="420"
        Width="420"
        ResizeMode="NoResize"
        WindowStyle="SingleBorderWindow">

    <DockPanel>
        <Button Content="Button"></Button>
    </DockPanel>

</Window>

App.xaml:

<Application x:Class="TicTacToe.DesktopApp.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>

        <Style TargetType="Button">
            <Setter Property="Margin" Value="10" />
        </Style>

        <Style TargetType="Grid">
            <Setter Property="Background" Value="Red" />

            <!--Uncomment the line below to see that button seems to be hidden under the grid.-->
            <!--<Setter Property="Opacity" Value="0.5" />-->
        </Style>

    </Application.Resources>
</Application>

MainWindow.xaml.cs и App.xaml.cs содержат только автоматически сгенерированный код.Ничего особенного.

Предварительный просмотр Visual Studio показывает окно, как и ожидалось:

enter image description here

Вместо этого я получаю:

enter image description here

Вопросы

Почему это так?Есть ли где-нибудь скрытая и всегда присутствующая сетка, которая перекрывает все окно и включается в мои правила стилей?И если да, то почему и почему он применяется с заметной задержкой фрагмента секунды?

1 Ответ

0 голосов
/ 30 ноября 2018

Это сетка, используемая инструментами проектирования дерева визуалов для выбора элементов в дереве визуалов при отладке.Вы можете проверить это, используя установщик событий и щелкнув сетку или запустив приложение, не в режиме отладки.

<Style TargetType="Grid">
    <Setter Property="Background" Value="Red" />
    <EventSetter Event="PreviewMouseDown" Handler="Grid_PreviewMouseDown"/>
    <!--Uncomment the line below to see that button seems to be hidden under the grid.-->
    <!--<Setter Property="Opacity" Value="0.5" />-->
</Style>

,

public partial class App : Application
{
    private void Grid_PreviewMouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
    {
        MessageBox.Show(VisualTreeHelper.GetParent(sender as Grid).ToString());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...