自定义样式未显示在页面中
Customised Style not showing in pages
我已经为此工作了一段时间,但遇到了一个我无法解决的问题。
我的自定义样式适用于某些元素而不适用于其他元素。例如,它适用于字体,甚至会格式化按钮字体,当我只规定了 TextBlock 字体时。
它将忽略大多数其他设置,例如面板、堆栈面板。
无奈之下,我设置了 stackpanel 和 panel 以及 NavigationWindow 和 Pages。我已经尝试将设置更改为许多不同的元素来测试它。
此外,一些代码完成会显示其中一些的选项,而另一些则不会。这似乎与渲染的内容和未渲染的内容无关。
我怀疑我缺少导入。
感谢任何帮助。
APPXAML
<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
第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">
主窗口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>
我认为问题是由不同 UI 元素的混合样式引起的。您应该使用样式中的 TargetType=
属性为 TextBox
es、StackPanel
s 等定义单独的样式。
此外,根据我的经验,为 Window
(没有使用 Page
的经验)设置样式通常不起作用。我恢复为 Window
本身设置其属性。
我已经为此工作了一段时间,但遇到了一个我无法解决的问题。
我的自定义样式适用于某些元素而不适用于其他元素。例如,它适用于字体,甚至会格式化按钮字体,当我只规定了 TextBlock 字体时。
它将忽略大多数其他设置,例如面板、堆栈面板。 无奈之下,我设置了 stackpanel 和 panel 以及 NavigationWindow 和 Pages。我已经尝试将设置更改为许多不同的元素来测试它。
此外,一些代码完成会显示其中一些的选项,而另一些则不会。这似乎与渲染的内容和未渲染的内容无关。
我怀疑我缺少导入。 感谢任何帮助。
APPXAML
<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
第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">
主窗口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>
我认为问题是由不同 UI 元素的混合样式引起的。您应该使用样式中的 TargetType=
属性为 TextBox
es、StackPanel
s 等定义单独的样式。
此外,根据我的经验,为 Window
(没有使用 Page
的经验)设置样式通常不起作用。我恢复为 Window
本身设置其属性。