なぜこれが起こるのか理解できません。WPFに簡単なアプリケーションがあります。このアプリケーションにはウィンドウがあり、App.xamlで1つのスタイルが定義されており、すべてのボタンのスタイルが変更されます。
<Application x:Class="PruebasDesk.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="Window1.xaml">
<Application.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="Height" Value="23"></Setter>
<Setter Property="Width" Value="75"></Setter>
<Setter Property="Background" Value="DarkCyan"></Setter>
</Style>
</Application.Resources>
</Application>
これは正常に機能し、すべてのボタンがスタイルを取得します。さて、ここに問題があります。StartupUri属性を使用してアプリケーションを起動する代わりに、OnStartupメソッドを使用してアプリケーションを起動する場合:
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
Window1 win1 = new Window1();
win1.Show();
}
}
アプリケーションのボタンは、App.xamlで定義されたボタンスタイルには適用されません。しかし...App.xamlに次のような別のスタイルを追加すると、次のようになります。
<Application x:Class="PruebasDesk.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
>
<Application.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="Height" Value="23"></Setter>
<Setter Property="Width" Value="75"></Setter>
<Setter Property="Background" Value="DarkCyan"></Setter>
</Style>
<Style TargetType="{x:Type TextBox}">
<Setter Property="Height" Value="23"></Setter>
<Setter Property="Width" Value="180"></Setter>
<Setter Property="Background" Value="Azure"></Setter>
</Style>
</Application.Resources>
</Application>
次に、ボタンにスタイルが適用されます!!! これは私には本当に奇妙に思えます。私が何かを逃しているかどうか誰かが知っていますか?