問題タブ [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.

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

c# - アプリケーション リソースにストーリーボードを配置する

複数の場所で同じストーリーボードを使用する必要があるため、ストーリーボードを Application.Resources 内に配置しました。ストーリーボードを実行しようとすると、アニメーション化するターゲットを参照する必要があるという唯一の問題があります。これが私のストーリーボードです:

別のオブジェクトの高さをアニメーション化する方法は、動的リソース ターゲットを変更することです。ストーリーボードが現在のウィンドウにあるときに、そうすることができました。しかし、アプリケーション リソースに配置したいので、ターゲット プロパティを参照する方法がわかりません。


編集

以前に投稿したソリューションはうまく機能しますが、コードで複雑なアニメーションを作成するのが難しい場合があります。私が考え出した別の解決策は、表現のブレンドを使用して絵コンテを作成することでした。そのため、エクスプレッション ブレンドのメイン ウィンドウにランダム コントロールをドラッグし、ランダム アニメーションを作成します。アニメーションが次のようになるとしましょう:

次に、そのコードをコピーして、APP.XAML ではなく作業ウィンドウに貼り付けます。

そして、私のコードで私が持っているとしましょう:

何らかの理由で、オブジェクトをアニメートするために変換グループが存在する必要があります。とにかく、作業ウィンドウにそのボーダーがあり、エクスプレッション ブレンドで作成したのと同じアニメーションでアニメーション化したいとしましょう。コードで行うことは次のとおりです。

そして、作業ウィンドウでその境界線をアニメーション化できます。これの良いところは、同じアニメーションを複数のオブジェクトに適用できることです (これがリソースを作成する目的だと思います)。ストーリーボードをリソース ディクショナリまたは app.xaml に配置しようとすると問題が発生します。ファイル。これを行うと、c# はストーリーボードを見つけることができますが、ストーリーボードのプロパティは読み取り専用であるため、エラーが発生します。


これをやりたかった理由は、同じアニメーションを複数のオブジェクトに適用するためです。回避策は、基本的なアニメーションをコードで作成し、イージング関数などのより複雑なアニメーションをリソースとして保存することでした。私の言いたいことをお見せしましょう。

リソース ファイルに、次のリソースを配置しました。

エクスプレッション ブレンドでは、より複雑なイーズ関数を構築できます。次に、コード ビハインドを使用して、基本的なストーリーボードを作成します。

これにより、複数のオブジェクトで同じストーリーボードを使用できるようになりました。

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

wpf - ResourceDictionary の変更により、DynamicResource の再評価がどのように発生しますか?

Resources ディクショナリが監視できない場合、DynamicResource 参照はどのように機能しますか? リソース ディクショナリの Add / Remove メソッドには、すべての DynamicResource 参照を「ポーリング」し、削除または追加されたときにそれらを更新する内部コードがありますか?

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

wpf - WPFでのバインドによるリソーススタイルの動的な設定

アプリケーションの配色を動的にしようとしています。これにより、アプリケーションの配色を決定するプロパティ(できればデータベースから取得)に色の値を設定できます。

Resources.xamlファイルがあり、アプリケーションの色とスタイルを設定して、すべてのコントロールとウィンドウで使用しています。リソースファイルのSolidColorBrushの色をViewModelのプロパティにバインドして、この色が現在のアプリケーション値に基づいて変更できるようにしたいと思います。これが私がこれまでに持っているものですが、それは機能していないので、何かが足りないに違いありません。

Resources.xamlファイルのコード:

MainWindow.xamlファイルのコード:

私のMainWindow.xamlのDataContextは、ApplicationViewModelと呼ばれるクラスであり、ViewModelBaseから継承します。このクラスは、文字列「Teal」を返すプロパティ「MainApplicationColor」を持ち、そのSolidColorBrushの色をFallbackValueから変更します。今のところ色をハードコーディングしていますが、これは将来データベースから自分の価値を取得したい場所です。現在、色は変化していないので、バインディングソースに何か問題があると思います。これは、明らかに期待どおりに機能していないためです。

ありがとう、

クララ

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

wpf - コンバーターから動的リソースを返す

bool の状態、この場合はチェックボックスの状態に応じて、WPF コントロールの色を変更したいと考えています。StaticResources を使用している限り、これは正常に機能します。

私のコントロール

私のコンバーター:

問題は、昼モードまたは夜モードの設定に依存するリソース「WarningColor」の定義がいくつかあることです。これらのイベントは、WarningColor の変更をトリガーしません。戻り値を動的にする方法はありますか、それとも設計を再考する必要がありますか?

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

wpf - WPF のコード ビハインドの静的/動的プロパティと名前付けの難問

ボタン スタイルとベクター グラフィックを持つ XAML で定義されたボタンがあり、次のように定義されています。

私のコード ビハインドには、これに似た新しいボタンを StackPanel に動的に追加するメソッドがあります。簡単に言えば、次のようなことを行います。

ここで奇妙な部分があります。ベクター グラフィックのみが表示され、その後ろにボタンは表示されません。最後から 2 番目の行 (ベクトル参照のある行) を削除すると、本来あるべきスタイルのボタンが表示されます! テンプレートを設定するとスタイルがオーバーライドされると想定していますが、XAML では友好的に機能しているようです。また、TemplateProperty の代わりに ContentProperty を設定しようとしましたが、これは型の文字列になりました。何か案は?ありがとうございました!

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

wpf - FixedPageを使用したWPF動的リソースルックアップの動作

次の非常に単純なxamlがあります。

ここでの動的リソース(より複雑な状況で実際に必要)の使用は機能しません。静的リソースを使用すると、TextBlockが目的の色になります。リソースをFixedPageのレベルに移動することもトリックを行います。ただし、最上位の要素に1つの汎用リソースディクショナリが必要です(ユーザーが色やフォントなどに対して実行可能な変更を行うことができるため)。リソースをアプリケーションレベルに配置することも機能します。しかし、それは正当な理由からの選択肢ではありません。

なぜこれが機能しないのか、誰にも手がかりがあります。TextBlock以降の論理ツリーと関係がありますか?

MSDNリソースの概要には、次のように記載されています。

ルックアッププロセスは、プロパティを設定する要素によって定義されたリソースディクショナリ内で要求されたキーをチェックします。

  • 要素がStyleプロパティを定義している場合、Style内のResourcesディクショナリがチェックされます。
  • 要素がTemplateプロパティを定義している場合、FrameworkTemplate内のResourcesディクショナリがチェックされます。

次に、ルックアッププロセスは、論理ツリーを上方向にトラバースして、親要素とそのリソースディクショナリに到達します。これは、ルート要素に到達するまで続きます。

また、MSDNの上記の説明に従って、ブラシとスタイルを(ダミー)スタイルのリソースに入れてみました。しかし、それもうまくいきませんでした。

これはそれほど複雑なことではないと本当に感じていますが、おそらく私は何かを監督しています。どんな助けでも大歓迎です。

編集

TextBlockに"tb"という名前を付けてから、tb.FindResource( "TestStyle")を使用すると、例外がスローされます。そのため、リソースが明らかに見つかりません。LogicalTreeHelper.GetParent(tb)をチェックアウトし、見つかった親に対してそれを繰り返すと、期待される結果が得られます:TextBlock> FixedPage> PageContent> FixedDocument .. ..

EDIT2

これは完璧に機能します。以前に予測されたXAMLとの違いは何ですか?

EDIT3

テキストボックスのForegroundプロパティに配置された動的リソースは解決できません(実際のリソースはFixedDocument.Resourcesレベルにあります)。また、コードビハインドでTryFindResourceを使用すると、pc(PageContent)からは機能しますが、fp(FixedPage)およびtb(TextBlock)からは、リソースを解決できません(objはnull)。XAMLマークアップで静的リソースを使用すると、すべてが正常に機能します。

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

wpf - ConverterParametersの動的スキニングを有効にする方法

スキンの変更が必要な一部のアイテムがDynamicResourceExtentionタイプの値をサポートしていない場合に、WPFアプリケーションの動的スキニングを有効にするための最良の方法は何ですか?特に、私たちの問題は、ConverterParametersがStaticResourceExtentionsを必要とすることです。

VisualStudio2008とWPF3.5を使用したConverterParametersの状況は次のとおりです。

値とパラメーターを受け取り、それらの積を返すだけのカスタムコンバーターがあります。非常にシンプルで問題なく動作し、ウィンドウ要素のサイズの設定など、さまざまなタスクに使用します。たとえば、「Source = {x:Static SystemParameters.PrimaryScreenHeight}」の値と「0.1」のパラメータを渡すと、要素の高さを画面の高さの正確に1/10に設定できます。

ここで、PctConverterはカスタムコンバーターへのリソース参照です。問題ありません。

次に、ConverterParameterを抽出し、それを別のリソースに配置することで、アプリケーションを動的にスキンします。たとえば、要素の高さを一部のスキンでは画面の高さの0.1にし、他のスキンでは画面の高さの0.25にします。最初は、ConverterParameterをDynamicResourceに設定するだけだと思っていましたが、これはサポートされていないため、次のようにStaticResourceExtensionを使用して設定する必要があります。

ここで、OurElementHeightParameterは、別のResourceDictionary(MainResource.xamlと呼びます)で次のように定義されています。

(ここで、名前空間はxmlns:sys = "clr-namespace:System; assembly = mscorlib"として定義されています。)

CustomParameterの抽出に関する限り、これは正常に機能しますが、スキンをオンザフライで交換してConverterParameterを変更することはできません。

これをもう少し調べた後、特に次の記事

wpfリソースを他のリソースタグに割り当てる方法

別の色の静的リソースとして色を使用したスキニング

リソースのエイリアシング

今必要だと思うのは、StaticResourceExtentionを取得し、リソースエイリアスを使用してその値をバックグラウンドで動的に設定することです。

これを実行するために、以前のOurElementHeightParameterリソースを次の2つのリソースに置き換えました

これは正常に機能し、同じ結果を生成します。

それがうまくいったとき、SkinnedHeightRatioリソースを別のResourceDictionary(Skin.xamlと呼びます)に配置し、それを元のMainResource.xaml ResourceDictionaryとマージするだけで、必要な動的スキニングができると思いました。

ただし、別のResourceDictionaryに抽出するとすぐに、<sys:Single x:Key="SkinnedHeightRatio">0.1</sys:Single>次のようなビルドエラーが発生します。

不明なビルドエラー、'インデックスが範囲外でした。負ではなく、コレクションのサイズよりも小さくする必要があります。

さらに奇妙なのは、上記の2つのリソースを同じResourceDictionaryに保持し、たとえば、それらの間に別のランダムなリソースを配置することによってそれらを分離する場合です。

次に、OurElementHeightParameterは、その真上にあるSomeRandomResourceを指し、その2行上にあるResourceKeyプロパティ(SkinnedHeightRatio)で指定されたリソースではありません...この場合、コンバーターに渡されるパラメーターは、ThicknessSomeRandomResourceです。

すべて非常に紛らわしく、間違った木を完全に吠えているように思わせます。では、どこが間違っているのでしょうか。

問題を再現するアプリケーションの完全なコードが必要な場合は、投稿できます。

どんなポインタでも大歓迎です。

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

c# - Expander IsExpanded from dynamicresource, 手動変更が機能しなくなった場合

何度も検索した後、コードでエキスパンダーを展開するこのコードを思いつきました。 (ただし、まだ完全ではありません)

XAML: これを「ヘッダー」に追加しました

次に、これを Window.Resources に追加しました

これがエキスパンダーの一部です(エキスパンダーはリストビューにあるデータテンプレートで作成されます)

このリストビューに複数のアイテムを追加できるため、複数のエキスパンダーが作成されます。C# では、次のコードを使用します。

今の問題は、例えばです。リストビューに5つのアイテムがあり、1の展開されたバージョンを見たいのですが、それらをすべてボタンで折りたたんで(これは機能します)、リストビューで必要なものを手動で展開します(詳細を表示するには展開します)。これを手動で展開したものは、「すべて展開」または「すべて折りたたむ」ボタンで反応しなくなりました。

前もって感謝します。

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

.net - DynamicResource の色が機能しない

次のコードがあります。

そして、色を含む TabItem スタイル

DynamicResourcea on an を使用できないことがわかりましたEasingColorKeyFrame
効果を得るにはどうすればよいですか?

色を動的に設定する必要があるため、交換"{DynamicResource SelectedColor}"するだけでは問題ありません"{StaticResource SelectedColor}"

問題を示す小さな解決策を作成しました。選択したタブは金色にする必要がありますが、実際には透明です。VSM は「SelectedColor」という名前の色を解決できないと思われるためです。

http://dl.dropbox.com/u/10557283/DynamicBug.zip

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

wpf - xamlを介して動的リソース値を変更する方法(トリガーなど)

たとえば、要素のスタイルがあり、トリガーを使用して特定のリソースを変更したい

出来ますか?