0

私はWPFではまったく新しいと言わざるを得ません。私は最初の実際のアプリケーションを構築していますが、現時点ではいくつかの問題に直面しています。これが私の投稿の理由です。

ExpressionDark.xaml などのテーマを使用するには、アプリケーション レベルで含めるだけで十分だと考えました。したがって、私の App.xaml に次を追加しました。

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/Skins/ExpressionDark.xaml" />
        </ResourceDictionary.MergedDictionaries>
        <myLib:Locator x:Key="Locator" />
    </ResourceDictionary>
</Application.Resources>

これが最初の質問です。自分が正しいことをしているかどうか確信が持てません。ExpressionDark.xaml をアプリケーションの "skins" フォルダーに含めて、その方法で参照するのは正しいですか? どこかで「System.Windows.Theming.ExpressionDark」などを見つけました。それは正しいアプローチでしょうか?

とにかく、上記の方法でテーマを適用すると、ほとんどすべてのコントロールが適切な方法でスタイル設定されていることがわかります。DataGrids や TextBoxes のように、そうでないものがあるため、「ほぼすべて」と言います。ExpressionDark.xaml の内部を確認したところ、これらのコンポーネントにもスタイルが定義されていることがわかりました。では、なぜこの奇妙な動作が発生するのでしょうか?

すべてを十分に明確に説明したことを願っています。そうでない場合はお知らせください。

何卒よろしくお願いいたします。

乾杯、

G.

4

1 に答える 1

0

わかりました、何が起こっているのかがわかったと思います。

App.xaml で、アプリケーションで使用するスタイル ディクショナリを設定します。私の MainWindow.xaml の「ローカル」リソースには、App.xaml によって継承されたものをオーバーライドしているように見える別のディクショナリが代わりにありました。

アプリの MergedDictionaries と一緒にローカル ディクショナリ (ウィンドウ内のディクショナリ) を移動したところ、すべてのコントロールが正しくスタイル設定されました。

この動作の理由はわかりません。2つの辞書は衝突することを意図していませんでした.Appで一般的なdictを使用し、Windowでより専門的な辞書を使用できると思いました。

それで、皆さんは私が実際に何を間違っていたのか分かりますか?

ご協力ありがとうございます、乾杯、ジャンルカ。

于 2010-05-11T13:17:10.513 に答える