問題タブ [resourcedictionary]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
8514 参照

wpf - 複合 WPF (Prism) モジュール リソース データ テンプレート

シェル アプリケーションと、Microsoft CompoisteWPF (Prism v2) を使用したいくつかの個別のモジュール プロジェクトがあるとします。

コマンドを受け取ると、モジュールは新しい ViewModel を作成し、リージョン マネージャーを介してリージョンに追加します。

次に、モジュール内にリソース ディクショナリを作成し、データ テンプレートを設定して、読み込まれたビュー モデル タイプのビューを表示できると考えました (以下の xaml を参照)。しかし、ビュー モデルがビューに追加されると、ビュー モデルの名前空間が出力されるだけです。

編集:

App.xaml に追加することで動作させることができます

これは問題ありませんが、新しいモジュールが作成されると、App.xaml ファイルを追加する必要があることを意味します。私が探しているのは、モジュールをロードして Application.Resources に動的に追加する方法です。これは可能ですか?

0 投票する
2 に答える
9263 参照

c# - リソース ディクショナリのスタイルの拡張/オーバーライド

WPF アプリケーションとは別の dll に BaseSkin と複数の UserSkins があります。

誰がアプリケーションを使用しているかに応じて、ベース スキンとユーザー スキンの 1 つがリソース ディクショナリにマージされ、アプリケーションが使用するために読み込まれます。

私が目指しているのは、BaseSkin ファイルでスタイルを指定し、特定の UserSkin ファイルでそれをオーバーライドして、必要なプロパティを変更できるようにすることです。

次のような BasedOn 属性を使用することで、これを実現できることがわかっています。

ベース:

ユーザー:

問題は、要素が CustomButtonBg のスタイルを持たなければならず、実際には実装されていない可能性があることです。両方のスタイルで同じキー (ButtonBg) を使用する方法はありますか?それらがマージされると、アプリケーションは最初に User で ButtonBg という名前のスタイルを探し、存在しない場合はベースのスタイルを使用しますか?

BaseSkin ファイルを指すように BasedOn 属性でアセンブリ名を指定できれば、同じキーを指定したときに命名エラーを回避できると考えていましたが、それを行う方法が見つかりません。他のオプションは、何も変更されていなくても各スタイルの実装を強制するか、プログラムでスキンをチェックすることですが、これらは最後の手段です。

0 投票する
1 に答える
2750 参照

wpf - DLL に存在する ResourceDictionary を使用して XAML ウィンドウをスタイルする方法は?

こんにちは、DLL で再利用可能な XAML ウィンドウを作成しようとしています。

Themes フォルダーに新しい ResourceDictionary を配置しました (Generic.xaml にもマージしました) が、ウィンドウでそのスタイルを使用しようとすると、スタイルが存在しないというエラー メッセージが表示されます。

このスタイルが存在しないという例外が発生します。どちらも Themes フォルダーにある ResourceDictionary で宣言されています。

0 投票する
5 に答える
45383 参照

wpf - マージされたディクショナリを含むリソースディクショナリを参照する際の問題

いくつかのリソースディクショナリXAMLファイルを含むライブラリCommonLibraryWpfThemesがあります。My Themes / Generic.xmlファイルには、他のすべてのファイルをマージするResourceDictionary.MergedDictionaries宣言が含まれています。

Generic.xaml

私のアプリケーションプロジェクトでは、CommonLibraryWpfThemesへの参照があり、App.xamlファイルでGeneric.xmlを明示的に参照しています。

App.xaml-失敗

これは機能しません。アプリを実行すると、次のエラーが発生します。

Generic.xamlのコンテンツをApp.xamlに直接配置すると、すべてが正常に機能します。

App.xaml-成功


多分私はこれについて間違った方法で行っています。私の目標は、個々のファイルをすべてリストすることなく、複数のアプリケーションからすべてのテーマリソースを簡単に参照できるようにすることです。これを行うための推奨される方法はありますか?(注:複数のテーマを切り替えようとはしていません。テーマは1つだけです。)

ボーナスとして、誰かがVisual Studioのデザイナーを壊すことなく、外部ライブラリのリソースを参照する方法を教えてくれるといいですね。

ありがとう。

編集:

ResourceDictionaryをResourceDictionary.MergedDictionary要素でラップしようとしましたが、それも機能しませんでした(同じエラーが発生します)。

0 投票する
3 に答える
17383 参照

wpf - グローバル スタイル (x:Key を持たない) をオーバーライドする方法、または名前付きスタイルをすべてのタイプ ターゲット コントロールに適用する方法は?

プロジェクト内のすべてのボタンに適用するスタイルを宣言しました。スタイルは ResourceDictionary にあります。

今、いくつかのウィンドウで、このスタイルから継承したいが、値を追加したい:

問題は、グローバル スタイルから継承されないことです。継承するには、グローバル スタイルにキーを割り当てる必要があります。

そして、ウィンドウの XAML 継承 (またはオーバーライド - オプション) で、次のようにします。

問題は、キーを割り当てた場合、それはグローバルではなく、各ウィンドウ/スコープで呼び出す必要があることです。

私の質問に対する解決策は、2 つのうちの 1 つである必要があります (他に見逃しているものはありますか?)。

  1. アプリケーション全体で対象となるすべてのコントロールに自動的に適用される、キーを持つグローバル スタイルを用意します。
  2. ResourceDictionary レベルの名前のないスタイルを参照せずにオーバーライドする方法。

実際に機能する名前付きスタイル (ResourceDictionary 内) の近くでスタイルを再宣言することを考えました。

しかし、愚かにもすべてのスタイルを再宣言するよりも優れたものを探しています。

0 投票する
3 に答える
7450 参照

c# - XAML ResourceDictionary で定義されているパスを実行時に WPF フォームに複数回追加するにはどうすればよいですか?

XAML で定義されたパスがあります。

私はそれをWPF Girdに追加したいと思っています。

ただし、ボタン クリック イベントにこのコードを追加してからボタンを 2 回クリックすると、次のエラーがスローされます。

「指定されたビジュアルは、すでに別のビジュアルの子であるか、CompositionTarget のルートです。」

その後、リソースの 2 つのインスタンスを作成しようとしましたが、引き続き同じエラーが発生します。以下は、このテストに使用したコードです。

そのため、実行時に ResourceDictionary で定義された XAML パスを WPF フォームに複数回追加するにはどうすればよいですか?

0 投票する
2 に答える
592 参照

wpf - 同じアセンブリ内のWPFとSilverlightの両方のリソース

複数のWPFアプリで使用するリソースが別々のアセンブリにあり、これは正常に機能しています。現在、Silverlight 3アプリを作成しており、同じアセンブリを使用して同じリソースを取得しようとしています。参照を追加するときに、Silverlightアセンブリのみを参照できるというエラーが表示されます。
これを行うための最良の方法は何ですか?リソース用に2つの別々のアセンブリセットが必要ですか?1つはWPF用、もう1つはSilverlight用ですか?2つの異なるが同一のリソースアセンブリを維持したくありません...

ありがとう

注:ファイルを「リンク追加」すると、複数のアセンブリ間で同じxamlを共有する問題が解決しました。ただし、私にとって大きな欠点の1つは、この機能がBlend3でサポートされていないことです。Blendは、プロジェクトツリーでローカルにファイルを見つけようとし続けます。

0 投票する
2 に答える
672 参照

silverlight-3.0 - Silverlight 3: マージされたリソース ディクショナリ - 非埋め込みファイルから

私は、クライアントが顧客のためにスキニングできるようにしたいと考えている SL3 アプリケーションを持っています。

顧客ごとに個別の xap は必要ありません。顧客ごとにリソース ディクショナリを定義できるようにしたいと考えています。

すべての顧客に対して同じ xap を使用し、実行時に顧客のためにマージする外部 xaml ファイル (リソース ディクショナリ) を指定することは可能ですか?

それとも、リソース ディクショナリを埋め込む顧客ごとに異なるバージョンの xap をビルドする必要がありますか?

  • マイケル
0 投票する
1 に答える
751 参照

wpf - リンクされたテーマ/Generic.xaml ファイルは、Visual Studio 2008 では機能しません

私が行っているプロジェクトがあり、Silverlight と WPF アセンブリの間でコードを共有する必要があります。アクションはすべて正しいページです。Silverlightアセンブリを所有者にすると、Silverlightは機能し、wpfは機能しません。現在、wpfが所有者であるため、エラーはまったく発生せず、コントロールを見つけることができないようにスタイルを設定することはありません..

注: 両方のプロジェクトが同じソリューションに存在します。

このシナリオは正常にビルドおよび実行されます

wpf プロジェクト

|__テーマ

このシナリオはビルドおよび実行されますが、リンクから通常に変更するとコントロールが表示されず、正常に動作します。

このソースコードを共有したいだけで、同じファイルの複数のバージョンが浮かんでいるのは避けたい.

シルバーライトプロジェクト

|__テーマ

私の陳腐なツリービュー表現でごめんなさい

+++++++ 更新 +++++++++

Silverlight であるか WPF であるかに関係なく、リンクされたファイルを使用すると、リンク ファイルがルートのみのリソースの Themes フォルダーにビルドされないことに気付きました。リフレクターを使用して、リンクされたファイルを含むアセンブリのコンパイル後にリソースがどこにあるのかを確認しましたが、それらは root になりました。これが実際に意図されていない動作である場合、これを防ぐ方法またはこれを修正する方法はありますか。

しばらくの間私を狂わせてきたので、これを理解してもらいたいと思っています。