Мой интерфейс WPF исчезает, когда я устанавливаю стиль для сетки в App.xaml - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть окно с сеткой, содержащей изображение и несколько кнопок:

<Window x:Class="Wormholes.Views.TitleWindow"
        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:Wormholes"
            xmlns:commands="clr-namespace:Wormholes.Commands"
        mc:Ignorable="d"
        Title="Warning: Weird Wormholes!" Height="450" Width="800" WindowState="Maximized" WindowStyle="None">xi
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="64"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Image Source="/Images/Splash.png" Grid.RowSpan="2" Grid.ColumnSpan="3"/>
        <Button Grid.Row="1" Grid.Column="0" Command="commands:Commands.StartCommand">Start</Button>
        <Button Grid.Row="1" Grid.Column="2" Command="commands:Commands.ExitCommand">Exit</Button>
    </Grid>
</Window>

И стиль в App.xaml:

<Application x:Class="Wormholes.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:Wormholes"
             StartupUri="Views/TitleWindow.xaml">
    <Application.Resources>
        <Style TargetType="{x:Type Grid}">
            <Setter Property="Background" Value="Black"/>
        </Style>
    </Application.Resources>
</Application>

Однако, когда этот стиль существует в App.xaml, тогда, когда я запускаю свое приложение, изображение и кнопки исчезают, как только открывается окно! Если я удаляю стиль, появляются элементы управления (конечно, без стилей). и если я добавлю стиль в Window.Resources, он будет работать, но, конечно, тогда он не будет применяться ни к каким другим созданным мною представлениям. Как я могу заставить стиль работать из App.xaml?

1 Ответ

0 голосов
/ 06 сентября 2018

Хотите применить ко всем вашим Grid элементам управления? Если это так, просто измените свой App.Xaml на этот, чтобы переопределить предыдущий стиль Grid:

<Application x:Class="Wormholes.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:local="clr-namespace:Wormholes"
         StartupUri="Views/TitleWindow.xaml">
<Application.Resources>
    <Style TargetType="{x:Type Grid}" **BasedOn="{StaticResource {x:Type Grid}}"**>
        <Setter Property="Background" Value="Black"/>
    </Style>
</Application.Resources>


Если это всего лишь несколько Grid элементов управления, измените App.xaml на это:

<Application x:Class="Wormholes.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:local="clr-namespace:Wormholes"
         StartupUri="Views/TitleWindow.xaml">
<Application.Resources>
    <Style x:Key="YourGridStyleKey" TargetType="Grid">
        <Setter Property="Background" Value="Black"/>
    </Style>
</Application.Resources>

А потом в вашем View:

<Window x:Class="Wormholes.Views.TitleWindow"
    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:Wormholes"
        xmlns:commands="clr-namespace:Wormholes.Commands"
    mc:Ignorable="d"
    Title="Warning: Weird Wormholes!" Height="450" Width="800" WindowState="Maximized" WindowStyle="None">xi
<Grid Style="{StaticResource YourGridStyleKey}">
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="64"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <Image Source="/Images/Splash.png" Grid.RowSpan="2" Grid.ColumnSpan="3"/>
    <Button Grid.Row="1" Grid.Column="0" Command="commands:Commands.StartCommand">Start</Button>
    <Button Grid.Row="1" Grid.Column="2" Command="commands:Commands.ExitCommand">Exit</Button>
</Grid>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...