問題タブ [contentpresenter]

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 に答える
1054 参照

c# - ScrollViewer を使用して ContentPresenter のビットマップ イメージ上のマウス座標を計算する簡単な方法はありますか?

ScrollViewer にアタッチされた ContentPresenter にビットマップ イメージ (2000 x 2000) があります。そのため、画像をズームしたりスクロールしたりできます。

画像に対するマウスの x,y 座標を知る簡単な方法はありますか? つまり、マウスを画像の上に置くと、マウスが通過するピクセルの対応する x、y が返されますか?

最悪のシナリオは、ウィンドウの端からのオフセットを計算し、マウスの x、y にスクロールとズームの係数を掛けることです。

これを処理する WPF に既に組み込まれているメソッドがあるかどうか疑問に思っていました。

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

wpf - WPF コンテンツプレゼンターの高さ

子ウィンドウを表示するカスタム コントロールで、Canvas 内にあるグリッドの Left と Top を親コントロールの中央に表示するように設定したいと考えています。

しかし、ActualHeight は、これが呼び出されて初めてゼロになります。また、次回の高さは、割り当てられた新しいコンテンツではなく、以前のコンテンツのものです。

コンテンツプレゼンターの実際の高さを取得するには? 何かイベントはありますか?

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

wpf - 式ブレンドのラジオ ボタンのようなリストボックス項目の動作を変更する

私は持っていListBoxます。

のすべてのアイテムにContentPresenter、 、Imageおよびが必要です。RectangleListBox

そこで、 のアイテム テンプレートを作成することにしましたListBox

今、私は 2 つのアイテムを持っていContentPresenterます。

  1. 画像のパスと

  2. 長方形の色。

そこで、サンプル データ ソースを作成し、パスと色の両方をそれぞれイメージ ソースとRectangle塗りつぶしにバインドしました。

長方形の塗りつぶしをサンプル データ ソースの色 (値) に直接バインドしていません。Behaviorを使用して長方形のLeftMouseButtonDownイベントにバインドしました。changePropertyAction

をクリックすると、長方形の色を変更できるようになりましたRectangle

しかし、問題は、任意の長方形をクリックしているときに、他の長方形の色を最初の色に変更したいということです。つまり、ラジオボタンのように動作させたいということです。

これは私が持っているものです:

ここに画像の説明を入力

これは私が欲しいものです:

ここに画像の説明を入力 ここに画像の説明を入力

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

wpf - カスタム パネルを作成しようとしていますが、オブジェクトには既に子があり、「ボタン」コンパイラ例外を追加できません

私はwpfにかなり慣れていません。

派手なデザインの境界線を持つカスタム パネルを作成しようとしています。カスタムパネルにコントロールが1つしかない場合に限り、すべてが機能しました。複数追加しようとすると、次の例外が発生します。

オブジェクト 'BordersPanel' には既に子があり、'Button' を追加できません。「BordersPanel」は、子を 1 つだけ受け入れることができます。

ネットで解決策を探すのに多くの時間を費やしましたが、今のところ何もありません。だから私はコミュニティに助けを求めています。

パネル スタイル:

C# コード ビハインド:

そして、これが私がそれを使用する方法です:

私はかなり明白な何かを見逃していると確信していますが、それは明白なもののことです。見れば見るほど、それらはあなたを逃してしまいます...

ところで、私がやったこと (バインディング、パネルなど) を行うためのより良い方法があると思われる場合は、コメントを歓迎します。:)

非常に明確にするために:使用する前に:

パネルを使用するたびに、このコードを何度も使用しています。

明らかに、前のコード ブロックで書いたものの方が短く、保守が容易です。(少なくとも私の意見では) そのため、コードの重複を避けるために、このカスタム パネルに境界線を付けました。

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

.net - 「ContentPresenter.Content」メモリ リーク

VS 2010、.Net 4、WPF、.Net Memory Profiler バージョン 4.6.40.0 Pro を使用しています。それらはすべてWin7 64ビットで実行されています。私は .Net Memory Profiler を使用してメモリ リークを追跡してきましたが、解決したように見えても理解できないものを見つけました。3 つの ContentPresenter オブジェクトを含むコントロールがあります。Cleanup メソッドで ContentPresenter オブジェクトの Content プロパティを null に設定すると、コントロールはまったくリークしません。Content プロパティを無効にしないと、大量のリークが発生します (各テストで約 3.5 MB)。

Google 検索で見た結果は、この問題に直接対処しているようには見えませんでした。ContentPresenter のドキュメントも役に立ちませんでした。コンテンツを無効にすることでリークが修正された理由を理解している人はいますか? 同じことを達成するためのより良い方法はありますか?

空域の問題を処理するために、ContentPresenter の 1 つが WindowsFormsHost と BitmapSource の間で動的に切り替えられることに注意してください。

更新: クリーンアップの関連部分は次のとおりです。

まず、ContentPresenter の

次に、WindowsFormsHost をクリーンアップします。

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

wpf - ContextPresenter.ContentTemplate をバインドできません

ContentTemplatePropertyをバインドしたいContentPresenter:

ビューモデル:

ExtraConsole.DataTemplate他のすべてのバインドされたコントロールは正しく更新され、 ExtraConsole クラスのExtraConsole 、 ViewModel 、および DataContext の値は変更として通知されますがNotifyProperty Changed

に変更はありませんUI

助言がありますか?