1

Windows Presentation Foundation(WPF) CodePlexプロジェクトのExpressionDarkテーマを適用しようとしています。

サブフォルダーにファイルを追加し、このファイルを参照するようにファイルを変更ExpressionDark.xamlしました。ThemesApp.xaml

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary
                Source="Themes/ExpressionDark.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

プログラムを実行すると、スタイルはすべてのコントロールに適用されますが、ウィンドウ自体には適用されません。ウィンドウの背景は白のままです。私が理解しているのは、スタイルはクラスには適用されますがWindow、派生クラスには適用されないということです。

app.xamlこの問題を回避するために、カスタムウィンドウクラスのWindowsスタイルを継承するために、ファイルに新しいスタイルを作成しようとしました。

<Application.Resources>
    <ResourceDictionary>
        <Style
            TargetType="{x:Type local:MainWindow}"
            BasedOn="{StaticResource {x:Type Window}}" />
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary
                Source="Themes/ExpressionDark.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

結果は厳密に同じです。

また、 WPF:Adventures in Theming(Part 2)からのアドバイスも試しました。ウィンドウ定義に追加しました:

<Window
    x:Class="MyProject.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:vm="clr-namespace:MyProject.ViewModel"
    Title="MainWindow"
    Height="350"
    Width="525"
    Style="{DynamicResource {x:Type Window}}" />

これ以上の成功はありません。

何が欠けている?

PS:それが重要かどうかはわかりませんが、私のウィンドウの子はグリッドです。

4

2 に答える 2

3

Window XAML で動的リソースを使用して Background を指定する

<Window x:Class="HellowWorld.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Hellow World" Height="614" Width="821"
        Background="{DynamicResource WindowBackgroundBrush}">
于 2013-02-13T23:05:46.760 に答える
2

前回チェックしたときWindow、テーマにスタイルがありませんでした。

于 2012-07-26T10:49:49.733 に答える