如何从 App.xaml 继承命名样式?
How do I inherit a named style from App.xaml?
为了帮助我的 WPF 应用程序有类似的感觉,我已经开始在应用程序级别使用样式:
<Application x:Class="MyApplication.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"/>
<Setter Property="Padding" Value="5"/>
<Setter Property="MinWidth" Value="60"/>
</Style>
<Style TargetType="TextBox">
<Setter Property="Margin" Value="10"/>
<Setter Property="Padding" Value="5"/>
<Setter Property="MinWidth" Value="60"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<Style TargetType="TextBlock">
<Setter Property="Margin" Value="10"/>
<Setter Property="Padding" Value="5"/>
<Setter Property="MinWidth" Value="60"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
</Application.Resources>
现在这对我的大多数控件都很好用,但我想更深入一点,为 headers 之类的东西添加特定的样式类型。从每个 window 我都这样做了:
<Window x:Class="myApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="150" Width="300">
<Window.Resources>
<Style x:Key="HeaderStyle" TargetType="TextBlock">
<Setter Property="Foreground" Value="Gray" />
<Setter Property="FontSize" Value="24" />
</Style>
</Window.Resources>
<StackPanel>
<TextBlock Style="{StaticResource HeaderStyle}">Header 1</TextBlock>
<TextBlock >Some content</TextBlock>
</StackPanel>
如何从 App.xaml 执行此操作?如果我想更改格式,则不必触摸每个 window。
我觉得我应该首先将在 window 中工作的相同样式 x:Key 添加到应用程序。然后将其添加到 window
xmlns:app="clr-namespace:myApp"
如果这是正确的,我不知道从这里去哪里。这是我在黑暗中试图让它发挥作用的照片之一
<TextBlock Style="{x:Type app:HeaderTextBlock}">Header 1</TextBlock>
感谢任何建议。
您遇到的问题:
<TextBlock Style="{x:Type app:HeaderTextBlock}">Header 1</TextBlock>
是您正在尝试添加对 App.xaml 的引用,但是您不必这样做。
您可以使用此代码
<TextBlock Style="{StaticResource HeaderStyle}">Header 1</TextBlock>
为了帮助我的 WPF 应用程序有类似的感觉,我已经开始在应用程序级别使用样式:
<Application x:Class="MyApplication.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"/>
<Setter Property="Padding" Value="5"/>
<Setter Property="MinWidth" Value="60"/>
</Style>
<Style TargetType="TextBox">
<Setter Property="Margin" Value="10"/>
<Setter Property="Padding" Value="5"/>
<Setter Property="MinWidth" Value="60"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<Style TargetType="TextBlock">
<Setter Property="Margin" Value="10"/>
<Setter Property="Padding" Value="5"/>
<Setter Property="MinWidth" Value="60"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
</Application.Resources>
现在这对我的大多数控件都很好用,但我想更深入一点,为 headers 之类的东西添加特定的样式类型。从每个 window 我都这样做了:
<Window x:Class="myApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="150" Width="300">
<Window.Resources>
<Style x:Key="HeaderStyle" TargetType="TextBlock">
<Setter Property="Foreground" Value="Gray" />
<Setter Property="FontSize" Value="24" />
</Style>
</Window.Resources>
<StackPanel>
<TextBlock Style="{StaticResource HeaderStyle}">Header 1</TextBlock>
<TextBlock >Some content</TextBlock>
</StackPanel>
如何从 App.xaml 执行此操作?如果我想更改格式,则不必触摸每个 window。
我觉得我应该首先将在 window 中工作的相同样式 x:Key 添加到应用程序。然后将其添加到 window
xmlns:app="clr-namespace:myApp"
如果这是正确的,我不知道从这里去哪里。这是我在黑暗中试图让它发挥作用的照片之一
<TextBlock Style="{x:Type app:HeaderTextBlock}">Header 1</TextBlock>
感谢任何建议。
您遇到的问题:
<TextBlock Style="{x:Type app:HeaderTextBlock}">Header 1</TextBlock>
是您正在尝试添加对 App.xaml 的引用,但是您不必这样做。
您可以使用此代码
<TextBlock Style="{StaticResource HeaderStyle}">Header 1</TextBlock>