問題タブ [dynamicresource]
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.
wpf - SelectedColor バインディングが ColorPicker から Model に更新されない
外観を変更できるようにする必要がある WPF アプリケーションがあります (主に背景と前景)。だから私はアプリケーション全体で定義された動的リソースにそれらをバインドしますApp.resources
。
ColorPicker
また、設定ウィンドウでfrom wpftoolkit
(v2.5.0)を使用することにしました
簡単な例
App.xaml
カラー ピッカーを使用したMainWindow.xaml
MainWindow.cs
ブラシモデル
問題は、色を選択したときに AppBrushのBREAKPOINTがヒットしないことです。BrushColor
にバインドされていColorPicker SelectedColor
ます。私が変更した場合BrushColor
、ColorPicker
更新されます。
それはColorPickerのバグですか、それとも私のものですか? 選択が変更された直後にアプリ ブラシを更新するにはどうすればよいですか?
c# - DependencyProperty を設定せずに、DynamicResource の変更 (特定の FrameworkElement に関連する) を通知するにはどうすればよいでしょうか?
変なお願いがあります。動的リソースが FrameworkElement に関連して変更されたときに通知を受ける必要がありますが、その FrameworkElement にプロパティを設定していません。そのため{DynamicResource someKey}
、XAML やsomeElement.SetResourceReference()
コード ビハインドでは使用できません。
現在の値を取得するのは簡単です。呼び出すだけでsomeElement.FindResource("someKey")
、現在の値が何であれ取得できますが、それにはポーリングが必要です。
バインドできる偽のバインディング ソース オブジェクトを作成することを検討しましたが、問題はビジュアル ツリーの一部ではないため、そのリソースがアプリ レベルで定義されていない限り、取得できません。ビジュアル ツリーに詰め込むこともできません。
DependencyProperty を定義できる Behaviors を使用する回答を見てきました。FrameworkElement にアタッチすると、疑うように更新されますが、FrameworkElement の setResourceReference に相当する Behaviors を呼び出す方法がわからないため、XAML が必要です。 .
それで...考え?
c# - ビヘイビアーは、関連する要素のリソース階層にどのようにアクセスできますか?
Behavior
今夜、動的リソースに関する問題を解決する際に、関連するフレームワーク要素のリソース階層に参加するクラスの機能に依存するソリューションにたどり着きました。たとえば、次のことを検討してください。
TextBlock は、境界線からリソースを表示します。でも、これをやると…
...ビジュアルツリーの一部ではないため、アプリケーションからのものを見つけます。
そうは言っても、代わりにこれを行うと...
次に、このように TextBlock に追加します...
動作はリソースの値を取得し、動的に追跡します。しかし、どのように?
Behavior は FrameworkElement ではないため、それに対して SetResourceReference を呼び出すことはできず、ビジュアル ツリーの一部でもないため、SetResourceReference を呼び出すことができたとしても、FrameworkElement に対してローカルなリソースを見つけることはできません。しかし、それはまさに Behavior が行うことです。どのように?
別の言い方をすれば、同じ動作を示す独自のクラスを作成したい場合 (しゃれは意図していません)、ビジュアル ツリーのリソース階層にどのように挿入するのでしょうか?
c# - Converter や StringFormat などを使用できるように、どのように DynamicResource にバインドできますか? (改訂 4)
注: これは、スタイルで使用できないという制限があった以前のデザインの改訂版であり、その有効性がかなり損なわれています。ただし、この新しいバージョンはスタイルで動作するようになり、基本的に、バインディングまたは動的リソースを使用して期待される結果を得ることができる場所ならどこでも使用できるようになり、非常に便利になりました.
技術的には、これは問題ではありません。これは、コンバーターをソースとして簡単に使用する方法を示した投稿DynamicResource
ですが、s/o のベスト プラクティスに従うために、質問と回答のペアとして投稿しています。そのため、これを行う方法を見つけた方法について、以下の私の回答を確認してください。それが役に立てば幸い!
c# - グリッド内の同じ種類のすべての要素に同じ動的スタイルを適用する
DynamicResource である同じスタイルをすべて使用するラベルでいっぱいのグリッドがあります。
グリッド内のすべてのラベルに対して一度だけスタイルを設定する方法はありますか? この方法で試してみましたが、BasedOn
動作しませんDynamicResources
。
xaml - XAML のボタンに DynamicResource Style と DataTrigger を使用する
次のような事前定義されたスタイルを使用していますStyle="{DynamicResource SquareButtonStyle}"
これは変更できず、Button
viaを有効/無効にする必要がありDataTrigger
ます。
どうやら無理っぽい?
エラー: プロパティ 'Style' が複数回設定されています。
c# - 複数行の DynamicResource ラベルを表示する
2 つの異なる DynamicResources からの文字列を表示する WPF にラベルを追加したいと考えています。
各 DynamicResource を新しい行に配置したい。
私の既存のコードは次のとおりです。
MyTextLine2 という別の DynamicResource があり、これを MyTextLine1 の下に同じラベルに表示したいと考えています。
これどうやってするの?
ここでこれらの例を見てきましたが、新しい行には表示されません: How to bind multiple values to a single WPF TextBlock?
wpf - Style.Resources 内で StaticResourceExtension を使用するとエラーが発生します
テンプレートで DynamicResource を使用し、そのテンプレートを使用して各スタイル内のリソースとして StaticResourceExtensions を使用しているため、DynamicResource はそれらのそれぞれで異なる方法で評価されます。
問題は、次のエラーが発生することです。
これが私のコードです:
c# - 画像 (動的リソースから) が利用できない場合のボタンのデフォルト コンテンツ
UserControl では、ボタンに画像を表示する必要があります (動的リソースによって提供されます)。動的リソースが利用できない場合、またはアプリケーションによって提供されない場合、ボタンにデフォルトのコンテンツを表示する必要があります。
私の考えは、デフォルトのコンテンツを画像の下にあるテキストブロックに入れ、画像ソースがnullである限り非表示にすることでした(透けて見えないように)。ただし、DynamicResource の解決に失敗した場合、この条件は機能しないようです。その場合、画像のソースの状態は正確にはどうなりますか?
適切な解決策は何ですか?
ご協力いただきありがとうございます!