0

テーマ全体を作成せずに、アプリケーションのカスタム ルック アンド フィールを作成しようとしています。デフォルトのウィンドウと次の App.xaml を使用して WPF 4.5 アプリケーションを作成しました

<Application x:Class="WpfBGTest.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="Window">
                <Setter Property="Background" Value="Yellow" />
            </Style>

    </Application.Resources>
</Application>

そして完全にデフォルトのウィンドウコード

<Window x:Class="WpfBGTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">

    <Grid>
    </Grid>
</Window>

これを行うと、デザイン タイムで Window.xaml が黄色であることがわかります。しかし、アプリケーションを実行すると、ウィンドウは黄色を失い、灰色に戻ります (現在のウィンドウのテーマ?)

そこで何が起こるの?すべてのコントロールに明示的な StaticResource マークアップを配置せずにアプリケーションをカスタマイズするにはどうすればよいですか? My Style にはターゲット タイプがあり、キーはありません。設計時間がランタイムとそれほど異なる理由がわかりません。

マージされた辞書の問題については十分に読みましたが、上記のコードは基本的に 1 つのスタイルのバニラ WPF アプリです。

編集: Snoop を使用して、取得する背景を決定するときに DefaultStyle が使用されていることを確認しました。しかし、なぜ?依存関係プロパティの優先順位リストを見る: http://msdn.microsoft.com/en-us/library/ms743230.aspx私のアプリケーション スタイルは、既定のスタイルの直前に選択する必要があります。

4

1 に答える 1