2

我试图在 XAML中Style为 WPF设置。Window我可以在 VS Designer 中看到我的更改,但是当我运行应用程序时,它总是会得到默认的Style.

不工作:

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

如果我Style用 Key 给它并应用它StyleWindow那么它就可以工作了。

在职的:

<Style x:Key="window" TargetType="Window">
    <Setter Property="Background" Value="Red"/>
</Style>

有什么理由需要给与Style钥匙Window吗?

任何人都可以解释发生了什么吗?

4

3 回答 3

1

有必要在 中添加构造Window

Style="{StaticResource {x:Type Window}}"

样式在文件中App.xaml

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

    <Application.Resources>
        <!-- In this case, the key is optional --> 
        <Style x:Key="{x:Type Window}" TargetType="{x:Type Window}">
            <Setter Property="Background" Value="Pink" />
        </Style>
    </Application.Resources>
</Application>

XAML 中的窗口:

<Window x:Class="WindowStyleHelp.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525"
    Style="{StaticResource {x:Type Window}}"
    WindowStartupLocation="CenterScreen">

    <Grid>

    </Grid>
</Window>
于 2013-08-02T18:24:28.803 回答
0

尝试

<Style TargetType="{x:Type Window}">
    <Setter Property="Background" Value="Red"/>
</Style>
于 2013-08-02T18:21:18.580 回答
0

样式中的目标类型不会应用于派生类型。

您可以使用StaticResource在所有窗口上应用密钥 -

<Application x:Class="WpfApplication4.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WpfApplication4"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <Style x:Key="MyStyle" TargetType="Window">
            <Setter Property="Background" Value="Red"/>
        </Style>
    </Application.Resources>
</Application>

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        Style="{StaticResource MyStyle}">

或者

style for your type (derived window)像这样在资源中定义一个-

<Application x:Class="WpfApplication4.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WpfApplication1"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <Style TargetType="{x:Type local:MainWindow}">
            <Setter Property="Background" Value="Red"/>
        </Style>
    </Application.Resources>
</Application>
于 2013-08-02T19:04:18.573 回答