Я хочу применить стиль по умолчанию для всех Button
s в приложении WPF.Это тестовое приложение имеет два Window
с, оба из которых определяют один и тот же пользовательский интерфейс, показанный ниже.
<StackPanel Orientation="Vertical" Margin="10">
<Button Content="Red Button Style" />
<Button Content="Red Button Style" />
<Button Content="Red Button Style" />
<Button Content="Red Button Style" />
</StackPanel>
Итак, я определил глобальный стиль в App.xaml
<Application x:Class="GlobalStyles.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:GlobalStyles">
<Application.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="Height"
Value="30" />
<Setter Property="MinWidth"
Value="180" />
<Setter Property="FontSize"
Value="16" />
<Setter Property="HorizontalAlignment"
Value="Center" />
<Setter Property="Padding"
Value="8 0" />
<Setter Property="Margin"
Value="4" />
<Setter Property="Cursor"
Value="Hand" />
<Setter Property="BorderThickness"
Value="2" />
<Setter Property="BorderBrush"
Value="DarkRed" />
<Setter Property="Foreground"
Value="White" />
<Setter Property="Background"
Value="OrangeRed" />
</Style>
</Application.Resources>
</Application>
и, как вы заметили, я удалил свойство StartupUri
Application
, поскольку я создаю оба окна в OnStartUp()
.
App.xaml.cs
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
new MainWindow().Show();
new SecondaryWindow().Show();
}
Проблема
Стили не применяются во время выполнения (но они применяются в конструкторе).Теперь, если я помещаю свойство StartUpUri
в App.xaml
, оно работает.
В чем здесь дело?
Редактировать
Если вызов base.OnStartup(e)
удален из OnStartup()
, то он работает.