問題タブ [basedon]
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.
xaml - xaml でカスタム コントロールのスタイルを拡張する
私は WPF アプリケーションを開発しており、カスタム コントロールを作成しました。これを「CControl」と呼びます。アプリケーションのレイアウトを設計している xaml ドキュメント。私はスタイルをインポートします:
そして、コントロールをうまく使うことができます。問題は、CControl でスタイルを拡張したいということです。リソース ディクショナリでは、次のように設定できます。
これにより、コントロールにスタイルが適用されますが、CControl で定義されたスタイルはインポートされないため、次を使用します。
問題は、フレームワークが xaml をロードしようとすると、次の例外が発生することです。
BasedOn を使用するさまざまな方法を試しましたが、何も機能しませんでした。どんな助けでも非常に役に立ちます。
ありがとう
ジョシュ
wpf - モジュールごとにいくつかのテーマ スタイルとプロパティをオーバーライドする
「Prism」を使用してWPFアプリケーションを作成しており、購入したいくつかのGridテーマが「Xceed Theme」に適用されています。一部のプロパティ (選択した行の背景など) を変更するオプションと、この機能を画面の「モジュール」ごとに使用できるようにするために、顧客が必要とする大きな変更を設計しています。
だから私の質問は:
- xceed グリッド テーマ ソースをマージされた辞書に追加した後、別の xaml ファイルで(おそらくタグに追加することによって
App.xaml
) そのスタイルの一部 (キーを知っている) をオーバーライドするにはどうすればよいですか?app.xaml
BasedOn
style
- モジュールごとにカスタム リソース ディクショナリを作成し、
app.xaml
読み込み中にマージされたディクショナリに追加することはできますか?
wpf - テンプレート全体を再度コピーせずに、別のxamlファイルのデータテンプレートで定義されたLinearGradientBrushをオーバーライドする方法
私のWPFアプリケーションでは、購入したグリッドテーマをアプリ全体に適用しています。モジュール/画面ごとにこのテーマを変更するには、CRが必要です。変更範囲は、「BasedOnを使用する」ブラシ、色、スタイルになります...したがって、あるテンプレートで内部的にブラシを定義/使用している場合、テンプレート全体を再度コピーせずにローカルモジュールxamlでそれをオーバーライドする方法と、ブラシと色に関して、ローカルxamlで同じキーを使用してブラシを再定義するだけで十分です。
変更したいブラシを含むコントロールテンプレートは次のとおりです。
wpf - 継承 / BasedOn データテンプレート
私はDataTemplate
自分のWPFアプリケーション内で使用しているものを持っています -
次に、(DocumentSetTemplateSelector
クラスで) 使用するテンプレートを定義します。
私がやりたい/知りたいことは; この上記のテンプレートを継承し、特定の属性を上書きできるようにする 4 つの他のテンプレートを作成します。
例 (このテンプレートは上記のクラスから継承されます) - 同じように見えます。
この効果を得るために、(可能であれば)これにスタイルを付けたいと思います。
また
wpf - カスタム TreeView itemcontainers スタイルを拡張しますか?
CustomTreeView で宣言したスタイルを拡張するにはどうすればよいですか? 明るい灰色の前景と緑の背景を持つようにするにはどうすればよいですか?
CustomTreeView.xaml
Window.xaml
wpf - WPF スタイルをオーバーライドする代わりに拡張する方法
アプリケーションでカスタム テーマを使用したいのですが、私が知る限り、リソース ディクショナリを使用して App.xaml で参照することで実現できます。スタイルは、次のようにデフォルトをオーバーライドします。
デフォルトのラベルスタイルは同じ値で上書きされていると思いますが、ラベルのフォントはすべて緑色です。問題は、あるラベルのスタイルをどこかで再度設定したいときに始まります。このようにグリッド内の他のプロパティを変更したい場合
グリッド内のすべてのラベルの前景色が失われ、再びデフォルトの色になります (前のステップでデフォルトをオーバーライドしませんでしたか?)。Style
いくつかの試行の後、これを適切に行うには、宣言に別のプロパティを追加する必要がBasedOn={StaticResource {x:Type Label}}"
あり、それが機能することがわかりました。アプリ全体で同じ BasedOn コードを繰り返さなければならないので、これはちょっと奇妙です。たとえば、HTML + CSS スタイルは継承およびマージされ、WPF では置き換えられます...
スタイル コントロールを使用しない場合でも、何らかの方法で外観を取得していることに注意してください (システム テーマ?)。スタイルに追加のコードがなくても、デフォルトで緑色であるべきだと彼らが考えるように、どこか別の場所でデフォルトを探すように指示するにはどうすればよいですか?
BasedOn プロパティの設定を自動化する方法はありますか? それとも、これを全体的に行う方が良いでしょうか?
wpf - WPF要素のプロパティの値をBasedOnから変更
私は次のスタイルを持っています:
上記の別のスタイルが必要ですが、1つの変更があります- TabPanelBorderRectangleBasedOn
の Color を変更したいです。Fill
Rectangle
したがって、BasedOn を使用するために、次のように記述しました。
Rectangle
しかし、スタイルからTabPanelBorderRectangle の色を変更する方法がわかりませんBasedOn
。
私は何かを試しました
しかし、それは機能しません (Style Setter で TargetName プロパティを設定することはできません) ..
これどうやってするの?
wpf - リソースのスタイルがメニュー項目に適用されない
カスタム コントロールを作成しましたが、そのスタイルでメニュー項目が機能しないため、BasedOn キーを使用してスタイルを適用しました
汎用 XAML コード スニペット
スタイルはMenuItemに適用されていませんが、以下のコードのようなスタイルを追加することは機能しています.Based onを使用してこれを達成する方法.
wpf - 「BasedOn」属性の混乱
私は3つのプロジェクトで解決策を持っています
- WPF アプリケーション (他の 2 つを参照し、テーマを App.Resources に追加します)
- CustomControl ライブラリ
- カスタムテーマ
テーマには次のボタン スタイルが含まれています
コントロール ライブラリには、次のものが含まれています。
コントロール ライブラリ内で、'BasedOn="{StaticResource {x:Type Button}}"' は何に評価されますか?
テーマの Button スタイルに評価されると思っていましたが、緑の境界線プロパティが取得されていないため、そうではないようです。
誰かがここで行われているルックアップ ルールを説明できますか?