問題タブ [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.
wpf - Freezable.Clone()メソッドとFreezable.CloneCurrentValue()メソッドの違いは何ですか
ドキュメントには
クローン-「System.Windows.Freezableの変更可能なクローンを作成し、オブジェクトの値のディープコピーを作成します。オブジェクトの依存関係プロパティをコピーする場合、このメソッドは式(解決されなくなる可能性があります)をコピーしますが、アニメーションや現在の値はコピーしません。」
CloneCurrentValue-「現在の値を使用して、System.Windows.Freezableの変更可能なクローン(ディープコピー)を作成します。」
これは、両方がディープコピーを行うことを意味します。では、違いは何ですか?
.net - WPF Freezable バグの回避策は?
私は最近、本当にひどい WPF バグに遭遇しました。Microsoft Connectのこのバグと同じだと思います。
このアプリケーションは、Visual Studio 2010 を使用して .NET 4.0 Client Profile をターゲットにしています。
基本的に、ViewModel が ItemsControl 内で項目を移動させるプロパティまたはコレクションへの変更をトリガーすると、以下の例外がスローされる可能性があります。常に発生するとは限らず、さまざまなトリガーに基づいてさまざまな時期に発生するようです。アプリ起動直後の方が多いようです。例外をヒットせずに数分間使用できる場合、そのアプリケーション インスタンス中にヒットすることはおそらくないでしょう。
Connect のバグ レポートと同様{DynamicResource key}
にSolidColorBrush
、ResourceDictionary
. 一部の辞書は手動でロードされます (テーマのサポートのため)。これらの辞書のすべてを手動でフリーズしようとしましたが、効果がないようです。
UserControl
s にバインドされた ItemsControls を含むいくつかの s をメイン ウィンドウに追加すると、最近、例外が頻繁に発生するようになりましたObservableCollection
。以前は、例外は 50 回に 1 回しか発生しませんでしたが、現在はプログラムを使用する 5 回に 4 回発生しています。
誰にも回避策のアイデアはありますか? Connect のバグは、これがおそらく次の .NET リリースで修正されることを示しています (そのときはいつでも) が、このバグにより、アプリケーションは基本的に使用できなくなります。
InvalidOperationException
編集: また、ViewModel 基本クラスの PropertyChanged イベント内でスローされた s を単純に抑制しようとしました。ObservableCollection
これにより、例外の数がいくらか減ったように見えましたが、今はのCollectionChanged
イベントでヒットするだけです。
wpf - 独自の Freezable クラスを作成するにはどうすればよいですか?
MSDN を試しましたが、Freezable から派生する例はありません。
アップデート:
はい、MSDN にはアニメーションの例がありますが、複雑すぎます。フリーザブルを理解するためのより簡単なものが必要です。
wpf - WPF フリーズした BitmapImage が表示されない
UI の画像プロパティにバインドされたビューモデルを使用していますが、ビューモデルには ImageSource プロパティが含まれています。次の関数を使用してそのプロパティを設定します
奇妙な理由で、次のコードでは、BitmapImage で Freeze を呼び出すと、メイン ウィンドウに表示されません。例外もクラッシュも発生しません。誰でもこれで私を助けることができますか? イメージ プロパティを非同期で設定しているため、UI スレッド以外のスレッドから GetImageFromUri 呼び出しが行われたと仮定して、作成したイメージを使用できるようにする必要があります。
c# - ストーリーボードを使用してカスタムコマンドを発生させます。エラー:ストーリーボードはフリーズできません
凍結できないことについて不平を言っているストーリーボードに問題があります。これについてグーグルにはたくさんのリンクがあります、しかし私はその情報を読んで私が望むものをどのように達成することができるかわかりません。(つまり、IsMouseOverプロパティの変更からカスタムコマンドを実行するだけです)。以下の情報で提供したリンクのようにリストビューを変更するためにデータテンプレートを使用しています。
私のリソース辞書:
私のUIは次のようになります:
私のコンバーターは次のようになります:
私のGestureState列挙型は次のようになります。
私のジェスチャーコントローラー/コマンドは次のようになります。
私のビューモデルは次のようになります。
私が得ている例外は次のとおりです。
InvalidOperation:ストーリーボードをフリーズできません。
私のUIは次のようになります。
現在の理解:
ストーリーボードは、フリーズされていないスレッド間ですばやくアクセスできるようにフリーズ可能である必要があることを読んで理解しています。
私の質問は、どのようにしてバインディングをフリーズ可能にするか、別のアプローチを使用して目的を達成できるかということです。私の主な問題は、ジェスチャをキャプチャするときにリストアイテムにマウスを合わせるときにカスタムコマンドまたはイベントを発生させたいということです。
c# - 親とは異なるスレッドに属する DependencyObject は使用できません
データベースがローカルではないため、データの読み込みに時間がかかる可能性があるため、ユーザーがコントロールから選択するとすぐに読み込みポップアップを表示したい wpf フォームを取得しました。ポップアップウィンドウのスレッドを作成するところまで、すべてがうまくいきました。
これは私が私のスレッドを作成する場所です:
そしてスレッドメソッド:
今、私がこのエラーを取得する瞬間:
親の Freezable とは異なるスレッドに属する DependencyObject は使用できません。
どんな助けでも大歓迎です:)
c# - 私がやりたいのはFreezableCollection.AddRange(collectionToAdd)です
私がやりたいのはFreezableCollection.AddRange(collectionToAdd)
FreezableCollectionに追加するたびに、イベントが発生し、何かが発生します。これで、追加したい新しいコレクションができましたが、今回はFreezableCollectionのCollectionChangedイベントを1回だけ発生させたいと思います。
ループして追加すると、新しいアイテムごとにイベントが発生します。
List.AddRangeのように、目標でFreezableCollectionにすべて追加できる方法はありますか?
c# - 添付プロパティ内の FrameworkElement のプロパティへのバインド
私はすでに問題を解決する方法を知っていますが、なぜこのように機能するのか説明が必要です。Text
コントロールのプロパティを設定するテスト添付プロパティを作成しましたTextBlock
。添付プロパティにより多くのパラメーターが必要なため、一般的なプロパティ ( IGeneralAttProp
) を受け入れるようにプロパティを作成したので、次のように使用できます。
Setter
添付プロパティとIGeneralAttProp
インターフェイスの実装は次のとおりです。
およびAttPropertyImpl
クラスの実装:
AttPropertyImpl
がから継承されている場合、すべて正常に動作しFreezable
ます。DependencyObject
メッセージとのバインドに失敗するだけの場合:
ターゲット要素の管理 FrameworkElement または FrameworkContentElement が見つかりません。BindingExpression:Path=TextToDisplay; DataItem=null; ターゲット要素は 'AttPropertyImpl' (HashCode=15874253) です。ターゲット プロパティは 'TTD' (タイプ 'String') です
の場合FrameworkElement
、バインドにエラーはありませんが、値はバインドされていません。
問題は、正しく動作するためになぜAttPropertyImpl
継承しなければならないのかということです。Freezable
c# - WPF DataGrid の最初の列をフリーズする方法
私はWPF DataGridを持っています..
水平スクロール中にそのWPF DataGridの最初の列をフリーズしたい..
私のコードは次のとおりです。