自定义样式不显示在页面中

时间:2015-05-21 05:23:12

标签: c# wpf xaml formatting

我已经做了一段时间并且遇到了一个我无法解决的驼峰。

我使用的自定义样式适用于某些元素,而不适用于其他元素。例如,它适用于字体,甚至可以格式化按钮字体,当我只规定了TextBlock字体时。

它将忽略的大多数其他设置,例如panel,stackpanel。 无奈之下,我设置了stackpanel和panel以及NavigationWindow和Pages。我尝试将设置更改为许多不同的元素以进行测试。

此外,一些代码完成将显示其中一些的选项,而其他代码则不会。这似乎与呈现的内容和不呈现的内容无关。

我怀疑我错过了一个导入。 任何帮助表示赞赏。

APP XAML

<Application x:Class="My.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 x:Key="MyWindowStyle">
        <Setter Property="Panel.Background" Value="Chocolate" />
        <Setter Property="StackPanel.Background" Value="Chocolate" />
        <Setter Property="StackPanel.HorizontalAlignment" Value="Stretch" />
        <Setter Property="TextBlock.FontWeight" Value="Bold" />
        <Setter Property="TextBlock.FontSize" Value="20" />
        <Setter Property="Button.Background" Value="White" /> .. ETC

PAGE XAML

<Page x:Class="My.HomePage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" Style="{StaticResource MyWindowStyle}"
    mc:Ignorable="d" Title="HomePage">      

MAINWINDOW XAML

<NavigationWindow x:Class="My.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="My App" Height="Auto" Source="HomePage.xaml"
    Style="{StaticResource MyWindowStyle}" WindowState="Maximized"></NavigationWindow>

1 个答案:

答案 0 :(得分:2)

我认为问题是由不同UI元素的混合样式引起的。您应该使用样式中的TextBox属性为StackPanel es,TargetType=等定义单独的样式。

此外,根据我的经验,为Window设置样式(没有Page的体验)通常不起作用。我恢复在Window本身设置其属性。