問題タブ [freezable]

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 投票する
1 に答える
117 参照

c# - 辞書フリーザブルで

FreezableDictionary を 1 つの として含むを作成したいDependencyPropertyfreezable Dictionaryがフリーズしたときに変更してはならないので、必要だと思いますFreezable...または間違っていますか?もしそうなら、私は本当に何をしなければなりませんか?

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

c# - WPF: Freezable と Visual の違い

確かに、Freezable クラスと WPF の Visual クラスはまったく異なる目的を持っています。私の質問は、Visual クラスまたは Freezable クラスのいずれかを実装するオブジェクトの違いに焦点を当てています。どちらも通常、グラフィックの問題に関連しているため、混乱しました。

では、グラフィカルな表現とビジュアルの方法での Freezable の目的は正確には何ですか?

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

c# - 複数の UI スレッド間で共有されるスタイルで DynamicResource と共に Pen を使用する

タイプの依存関係プロパティを持つカスタム WPF コントロールがありますPen(コントロール内の分割線のスタイルを設定するために使用されます)。

このプロパティの既定値はシステム カラーであると想定されています。この既定値を使用する場合、ユーザーが (Windows 設定で) システム カラーを変更すると、コントロールを更新する必要があります。

これまでのところ、このデフォルト値をデフォルト コントロール スタイルの一部として指定しました。

コントロールが単一の UI スレッドでのみ使用されている限り、これは正常に機能します。ただし、別の UI スレッドで実行される複数の最上位ウィンドウでコントロールを使用すると、次の例外が発生します。

どうやら、<Pen>インスタンス内で動的リソースを使用すると、スタイルが凍結されるのを防ぐことができます。

これまでのところ、2 つの解決策を考えることができます。

1) スタイルにセットx:Shared="False"します。すべてのコントロール インスタンスは、既定のスタイルの独自のコピーを取得するため、固定する必要はありません。ただし、このスタイルには他にもいくつかのセッター (重要なテンプレートを含む) があるため、それらをコントロールの複数のインスタンスで共有できるようにしたいと考えています。

2) タイプのPenプロパティを、ブラシ、太さ、ダッシュ スタイルなどの個別のプロパティに分割します。これにより{DynamicResource}、スタイルのセッターで直接使用され、スタイルを固定できます。(ただし、スタイルがいつフリーズ可能になるかについての正確な詳細はわかりません)ペン型のプロパティが複数あり、それぞれにユーザーがカスタマイズしたいプロパティがかなりあるため、この解決策は望ましくありません。また、コントロールのパブリック API に重大な変更を導入することなく、この例外を修正したいと考えています。

他のアイデアはありますか?DividerPen プロパティにこの種の既定値を指定する他の方法はありますか?


複数の UI スレッドの意味について混乱があるように思われるので、独自のスレッドで新しいウィンドウを開くコードを次に示します。

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

wpf - Storyboard.TargetProperty="スタイル"

WindowsRT がこの方向に進んでいるように見え、異なるコードの量を最小限に抑えたいため、トリガーとテーマの使用から VisualStateManager に切り替えようとしています。その趣旨で、Surface 2 などのタブレット デバイスの大きなマージンと、デスクトップ スキームの通常の外観のマージンとを切り替える単純なスキームを設定しようとしています。オブジェクトにプロパティを直接設定することでこれを実行できることはわかっていますが、コントロールに 15 個のラベルがある場合、すべてのラベルにマージンを設定するストーリーボードを作成することは単にサポートできません。だから私はこのコードで各ラベルのスタイルを交換しようとしています:

私の検索では、Silverlight と Windows ストア アプリケーションで動作するほぼ同じパターンを示すいくつかの例を見てきました。従来の WPF でこれを試してみると、「このフリーズ可能なものはフリーズできません」というメッセージが表示されます。Reflector でコードを掘り下げ、Style が DependencyObject から派生していないため、何を凍結しようとしているのか混乱しています。ここで何が起こっているのか、誰にも手がかりがありますか?

0 投票する
0 に答える
49 参照

c# - WPF - ストーリーボードにリソースの解凍と再凍結を強制する

私の WPF アプリケーションでは、ユーザーがカスタムのライト テーマとダーク テーマを切り替えることができるようにしています。コントロール テンプレートの 1 つのセットを使用し、ブラシ リソースを交換してテーマの切り替えを処理します。

これは、コントロール テンプレートのストーリーボード内のアニメーションで参照されるブラシを除いて、非常にうまく機能します。

ストーリーボードは、その中のすべてのリソースをフリーズします。

これにより、マージされたすべての辞書をクリアしてリロードする必要があります。私はそれを避けようとしています。

Q: ストーリーボードを強制的に解凍し、そのリソースを更新して再凍結する方法はありますか?

Storyboard のクローンを作成し、親の VisualState を更新しようとしましたが、うまくいかないようでした。

筋金入りの WPF 専門家はいますか? :)

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

wpf - パス データをフリーズする方法

PathWPF アプリケーションには多くの複雑な があります。例は次のとおりです。

ほとんどのコントロール テンプレートでは、ベクター グラフィックスを多用する必要があり、複数の効果がこれらのパスに適用されます。

Dataパフォーマンス上の理由から、これらのパスは変更されないため、フリーズする必要があります。使用しているこの構文は、 を作成し、StreamGeometryそれにデータを割り当てます。StreamGeometryフリーズ可能ですが、どうすれば xaml でフリーズできますか?

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

wpf - ResourceDictionary の Freezable に対して DynamicResource を動的にする方法はありますか?

私はBrushes.xamlにこれを持っています:

そして、Generic.xaml で次のように使用します。

問題は、wpf がブラシをフリーズするため、DynamicResource効果がないことです。

これを解決するきれいな方法はありますか?厄介なハックしか思い浮かびません。