問題タブ [frameworkelement]
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 - アンロードする前に FrameworkElement プロパティを取得する方法
UI 設定システムを実現する必要があります。UI 要素の一部のプロパティ (実行時にユーザーが変更できます) を永続ストレージからロード/保存します。例えば:
- DevExpress グリッド コントロール - 列幅、可視性、要約領域など (このコントロールには RestoreLayoutFrom/SaveLayoutTo などのメソッド ペアのセットがありますが、SaveLayoutToStream(Xml) は grid.Unloaded ハンドラーでは機能しません - グリッドが PresentationSource から切断されている場合)
- GridSplitter を介してユーザーが幅/高さを調整できるグリッドの行/列
- かなりのポップアップ コントロール
コントロールのロード/初期化などの後、設定ストレージからコントロールのプロパティをセットアップするのは簡単ですが、保存する設定を取得するために、コントロールがアンロードされる前の瞬間 (ビジュアル ツリーに残っているとき) をどのように捉えますか?
簡単な説明
シングルトンを作成するつもりです-UISettingsManager。これには、[要素Uid、要素設定データ]のペアを持つディクショナリが含まれています。ビジュアル コンテナー (Window、UserControl) では、このマネージャーは次のように使用できます。
myGridControl と myPopup には (アプリケーション スコープ内で) 一意の Uid があるため、UISettingsManager は内部辞書から設定を取得してコントロールに適用できます。もちろん、UISettingsManager は、いくつかの異なるタイプのコントロールを操作する方法を知っています。
しかし、コントロールの設定を格納するのに適切なタイミングは、ウィンドウとユーザー コントロールのどちらのコンテナーでしょうか?
wpf - ScrollViewer を FrameworkElement にアタッチしますか?
Adorner
または他の手段を使用して、 を動的に取得しUIElement/FrameworkElement
、動的に作成された 内に配置することは可能ScrollViwer
ですか? 明らかな問題は、最初に要素を親要素から切り離す必要があることですが、これを行うエレガントな方法を探しています。
silverlight - FrameworkElement がレンダリングされているかどうか
FrameworkElement
画面にレンダリングされたことを確認する方法はありますか。例えば。2 つの長方形があり、1 つが他の長方形と重なっています。しかし、「どれだけ」重なり合っているかはわかりません。
したがって、ユーザーが両方の長方形を見るか、1 つだけを見るか、または 1 つを完全に、もう 1 つを部分的に見るかを知る必要がありますか?
wpf - FrameworkElement の DataContext プロパティは要素ツリーを継承しません
こんにちは、WPF のプロの皆さん。
DataContext は FrameworkElement (すべての WPF コントロールの基本クラス) のプロパティであり、DependencyProperty として実装されます。つまり、論理ツリー内のすべての子孫要素が同じ DataContext を共有します。
ContentControl は、その子孫要素でそれを行う必要がありますか?
そうではないシナリオがあり、その不正行為の原因は何ですか?!
それについてもう少し理解するには、問題が始まるこのスレッドを読んでください(ここにすべてをコピーしたくない)...:
WPF: トリガー ターゲット 'cc' が見つかりません。ターゲットは、すべてのセッター、トリガーの前に出現する必要があります
つまり、ContentControl 内の私の DataTemplates には、バインドするものが何もないことを意味するデッド DataContext があります。実際には不可能なことです...
ContentControl の下のすべての要素は、DataContext プロパティに何も設定されていませんか???
wpf - WPF-カスタムキャンバスへのContentControlの追加
Canvasから継承されたカスタムDrawingCanvasがあります。次のコードを使用してContentControlをDrawingCanvasに追加すると、何も表示されません。
GraphicsRectangleはDrawingVisualであり、上記のコンストラクターは、左上の点(0,0)と長さが200のRectをGraphicsRectangleのdrawingContextに描画します。DrawingContainerはFrameworkElementであり、コンストラクターで指定された1つの子があります。DrawingContainerは、GetVisualChildおよびVisualChildrenCountオーバーライドメソッドを実装します。最後に、ContentControlのContentプロパティがDrawingContainerに設定され、DrawingVisualのコンテンツを表示できるようになります。
作成したContentControlを通常のCanvasに追加すると、コントロールが正しく表示されます。その理由は、DrawingCanvasがArrangeOverrideメソッドを実装していないためだと思います。MeasureOverrideメソッドのみを実装します。また、DrawingContainerはMeasureおよびArrangeオーバーライドメソッドを実装していません。何か案は?
c# - C# WPF Stackpanel でプログラムによって作成された DataTemplate Dockpanel は効果がありません
リストボックスのデータ テンプレートを動的に作成しようとしています。これは、カスタム UserControl 用です。この UserControl には、任意のタイプのIEnumerable<>を受け入れるDependencyPropertyがあります。
これは正常に動作します...しかし、出力は常に
- プロパティ/値
- プロパティ/値
オブジェクトに 2 つのプロパティが含まれている場合。しかし、プロパティを並べて配置したいと思います。お気に入り:
オブジェクト 1:
- プロパティ / 値 プロパティ / 値
オブジェクト 2:
- プロパティ / 値 プロパティ / 値
どこが間違っているのですか?最初に Stackpanel を作成し、Stackpanel で、ラベルを含む Dockpanels を作成しています。
現時点での外観を少しプレビューします。
したがって、これはデータテンプレートを作成するための私のコードです:
c# - WPFFrameworkElementマウスクリックの問題
WPFアプリでは、グリッド内に多数のCustomControlsがあります。それらのマウスクリックを処理するためMouseLeftButtonDown
に、グリッドのイベントを使用し、イベントハンドラーで、どのCustomControlがクリックされたかを確認します。
この問題は、すべてのCustomControlをUserControlに配置してから、グリッド内に配置したときに発生しました。この場合、アプローチは機能しません。
それぞれの場合にクリックソースのタイプを確認したところe.Source.GetType().ToString();
、次の結果が得られました。
問題がない場合(UserControlなしでCustomControlsをグリッドに配置した場合)
CustomControlsをUserControlに配置してからグリッドに配置すると
CustomControlsをUserControlに配置し、次にグリッドに配置して、外部ファイルからUserControlをロードするとXamlReader.Load
だから、私の質問:
CustomControlsをe.Source
UserControl内にあるときのように可視化するにはどうすればよいですか?
c# - WPFカスタムFrameworkElement/IScrollInfo
基本的なカスタム実装を備えたシンプルなテストアプリがありFrameworkElement
ます(以下のTestElement)。TestElementは、いくつかの描画ビジュアルを作成し、コンストラクター内で600の幅にいくつかのものを描画します。また、IScrollinfoの必要なビットを実装します。要素を含むウィンドウには、scrollviewerと最大サイズ300x300があります。スクロールバーが表示されますが、TestElementのコンテンツはスクロールされません。
誰かが私がやろうとしていることが可能かどうか、もしそうなら私が間違っていることを提案できますか?SetHorizontalOffsetで描画ビジュアルを再レンダリングすることはできますが、必要なものをすべて描画したので、パフォーマンス上の理由から再レンダリングしたくありません。
質問に意味があることを願っています。そうでない場合はお知らせください。明確にできます。
どうもありがとう-カール
xaml:
wpf - FrameworkElement.Name の問題
コンストラクターで Page の Name プロパティを設定しようとしています。
ただし、次のエラー メッセージが表示されることがよくあります。
x
例外の詳細にドリルダウンしても、有用な情報が得られないようです (たとえば、InnerException が null であるなど) 。
ここで何が起こっているか知っている人はいますか?