1

現在の WPF Application ResourceDictionary をプログラムで設定しようとしています。(私はWindFormsプロジェクトを持っているので、それを行うための「App.xaml」はありません)。

注: Application.Resources に相当するものを ElementHostとそのすべての子コントロールの hierarchyにバインドする方法を誰かが知っている場合、これがここでの最終的な目的です。

私は自分のコードに追加しました:

Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("/Middlewerks;component/Resources.xaml", UriKind.RelativeOrAbsolute) });

アプリケーションで完全に機能するようになりました。スタイリングは問題ありません (つまり、グリッドの背景は赤です。これは単なるテスト スタイルです)。

しかし、このフォームをデザイナーで開くと、Visual Studio が狂ってしまいます。ウィンドウ全体が私のスタイルを使用しています!

スクリーンショットは次のとおりです: http://localhostr.com/files/8368cc/Failure.jpg すばらしい のは、Visual Studio 2010 の醜い青いスキンを編集する方法を見つけたことです。悲しいことに、私のコントロールで開発を行っても、顧客を満足させることはできません。

気軽に試して、すべてを台無しにすることなくリソースを実装する方法を教えてください。

XAML コード: (スクリーンショットに表示)

編集:これは私の一時的な非常にハックな解決策であり、開発を続けることができます。「Application.Current」が Visual Studio で動くのは本当に困ります。

if (Application.Current.MainWindow == null || !Application.Current.MainWindow.Title.EndsWith(" - Microsoft Visual C# 2010 Express"))
{
    Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("/Middlewerks;component/Resources.xaml", UriKind.RelativeOrAbsolute) });
}
4

1 に答える 1

0

WPF領域を使用するWinFormsプロジェクトで作業したときは、MergedDictionariesを使用して、必要なときに必要なリソースを取り込むことができました。

<Window.Resources>
  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
      <ResourceDictionary Source="DefaultResourceDictionary.xaml"/>
    </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
</Window.Resources>

あなたはそれで逃げることができますか?よりプログラム的に行う必要がある場合でも、辞書にコードを置くことができます。

これは、任意の要素の任意のレベルで使用できます。つまり、Windowここに示すようなものである必要はありません。

于 2010-09-03T00:12:24.127 に答える