問題タブ [actualwidth]
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.
c# - オブジェクトのActualWidthとActualHeightは0として報告されますか?
次のようGrid
に拡張されたAbstractクラスから継承するのいくつかのインスタンスを含むアプリケーションがあります。UserControl
そして、それらが継承するクラス(これは、いくつかのメソッドとプロパティを持つ非常に基本的なクラスです):
これらのグリッドは実行時に動的に構築され、それぞれのサイズはさまざまです。ユーザーがアプリケーションを閉じたら、それぞれのスクリーンショットをキャプチャGrid
してローカルマシンに保存したいと思います。これを行うために、オブジェクトのサイズを取得し、を使用してファイルに保存するメソッドを作成しましたRenderTargetBitmap()
。それらの多くは問題なく保存されますが、一部のグリッドはActualWidth
and ActualHeight
of0
を返しているため、保存されていません。これらはすべて同じ正確なオブジェクトのインスタンスであるため、この問題のデバッグをどこから開始すればよいかわかりません。どうしてそれらのいくつかがそれらを持っていて、他のものが持っていない可能性がActualWidth
ありActualHeight
ますか?これらはすべて、アプリケーションで問題なく表示されます。
さらに情報/コードが必要な場合はお知らせください。ありがとう!
c# - RenderTransform を実行した後、ActualWidth/ActualHeight が変更されないのはなぜですか?
イメージコントロールのサイズを変更する次のコードがあります
コードは正常に機能しますが、スケーリング後に画像が変更されないActualWidth
理由を理解しようとしています。これらは常におよびActualHeight
の値と同じです。Width
Height
新しいイメージ コントロールのサイズを取得するにはどうすればよいですか? スケール変更率を介して手動で計算する必要がありますか?
c# - ユーザー コントロールの ActualWidth の検索
XAML/C# でいくつかのレイアウトに取り組んでいますが、特定の理由でSizeToContent="Width"
オプションを使用できませんが、特定の状況でそれをシミュレートしたいと考えています。エキスパンダー内にユーザー コントロールが配置されており、そのユーザー コントロールの ActualWidth を取得して、エキスパンダーが展開されたときに GridColumn とウィンドウのサイズをそれに応じて大きくできるようにしたいと考えています。Expander はIsExpanded="False"
、ActualWidth プロパティが 0.0 として読み取られると開始されるためです。ユーザー コントロールの ActualWidth が完全に表示SizeToContent="Width"
され、有効であるかのように取得する方法はありますか?
実際の値をハードコーディングせずにこの幅を計算する方法を必死に見つけようとしています。DesiredSize.Width
またRenderedSize.Width
、エキスパンダーが折りたたまれている場合は両方とも 0.0 を返します
wpf - WPF 依存プロパティが変更されました ActualWidth == 0
ActualWidth
およびの値がActualHeight
ゼロにならないように、ウィンドウにコンストラクター内のコントロールを強制的に測定させるにはどうすればよいですか? これが私の問題を示すサンプルです(メジャー関数とアレンジ関数を呼び出そうとしましたが、間違った方法である可能性があります)。
XAML:
コードビハインド:
この例のポイントは、左端から右端までカウント数の垂直線を描画したことです。TextBox の値を変更するとうまくいきますが、最初に線を描画したいです。
では、最初に線を描画するようにコードを更新するにはどうすればよいですか? または、この目標を達成するには、前述のコードとは異なるアプローチがより適切でしょうか?
ご尽力いただきありがとうございます。
wpf - リストアイテムのサイズに関係なく、リストボックスの幅が変わります
投稿の下部にある更新を参照してください
.Net 4.5 を使用して WPF アプリを作成しています
映画情報を表示していListBox
ます。xaml を以下に示します。
リスト内のすべてのサムネイル (画像) は、同じ幅と高さ (小、中、大のいずれか) になります。私が持っSizeToContent=Width
ているウィンドウの場合、サムネイルのサイズが変更されると、ウィンドウのサイズが自動的に変更されます。
問題は次のとおりです。ListBox
マウス ホイールを使用してスクロールすると、ListBox
幅が一見ランダムに変化し、ウィンドウの幅が大きくなります。スクロールバーの上下ボタンを使用してスクロールすると、これは発生しません。
項目データ テンプレート (テキスト ブロック、スタック パネル、境界線など)ActualWidth
のすべての要素をデバッグしましたが、それらはすべて予想される固定幅のままですが、リスト ボックス自体の幅をデバッグすると、幅がランダムに変化することが示されます。 ListBox
.
ここに 2 つのスクリーンショットがあります。1 つ目は正しいレイアウトを示し、2 つ目はListBox
マウス ホイールでスクロールした後のレイアウトを示しています。
ListBox
ActualWidth
では、含まれているアイテムが変化しないのに、なぜ変化するのでしょうか?
更新: さらに調査を行うと、サムネイルに使用している画像がサムネイルの表示サイズよりも大きく、画像コントロールによってサイズ変更されているために、この動作が引き起こされていることが示唆されています。リストボックスは、サイズ変更された小さい画像ではなく、元の画像サイズに応じて(時々)サイズ変更されているようです。
これを克服するための提案はありますか?
javascript - jQueryで要素の実際の幅と高さを取得してみてください
jQueryで要素の幅と高さを取得しようとしています。これで、要素をスパンでラップし、一時的なスパン要素からサイズを取得する関数ができました。
HTML
JS
(ではない) 動作例: http://jsfiddle.net/KmeaC/1/
「Hello world」の実際の幅と高さを取得する唯一の方法は、周囲の div タグを削除することです: http://jsfiddle.net/ycxTr/。しかし、それは私が望むものではありません:)
誰?
wpf - WPF が子コントロールの幅を親コントロールの実際の幅にバインドしているのは悪い考えですか?
子のサイズが大きくなり、親のサイズが大きくなるという無限ループを見つけて修正したので、好奇心が強いと思います。ただし、メジャーをオーバーライドして親のサイズを見つけてから、代わりに目的のサイズを返す方がよいのではないかと考えています。Width
またはを変更しないことHeight
で、無限ループを作成する可能性を排除します。反対に、xaml で幅をバインドしないことで、コントロールの幅がどのように決定されるかがコード ビハインドに隠されるようになりました。
c# - WPF子の幅が親の実際の幅にバインドされているとどうなりますか
では、親の にリンクする子オブジェクトの幅にバインディングを配置するとActualWidth
、どうなるでしょうか?
私の推測では、親は子が必要とする幅を測定し、子は親に 0 の幅を伝え、その後親は配置中に実際のスペースを与えられ、子は何も望まなかったので子にゼロを与えようとします。次に、親に与えられたスペースの実際の幅により、バインディングによって子の幅が変更されます。この時点で、レイアウトが再度実行されると思います。
ただし、これはバインディングがそれほど速く伝播しないことを前提としています。バインドされた値がいつターゲットに伝播するのか、私はまだぼんやりしています。それはすべて、親の actualwidth 値がいつ変更されるかによって異なります。これは、レイアウトが完了した後に発生しますか? そして、バインドされたピースが更新されますか? すべてのバインディングは、現在実行中のコードを中断してターゲット値を更新しますか? そうでない場合、あるバインディングが再描画を必要とする変更を伝播し、別のバインディングが再描画を引き起こす別の変更を伝播すると、問題が発生しませんか?
一部の人々は、私の実際の問題は何かと尋ねました。
そのため、最初は、使用可能なスペースを埋めるためにコントロール ストレッチが必要でした。十分に単純ですが、スクロールビューアーにしたかったのです。Scrollviewer は、測定中に子に無限のスペースを与えます。代わりに、子コントロールの幅と高さを親の実際の幅と実際の高さにバインドできます。レイアウトは 2 回目のパスを行い、すべてがうねりのように見えます。
ただし、後で、コントロールテンプレートでコントロールを拡大する同様の種類の問題が発生しましたが、最小幅と配置 = ストレッチを設定して拡大できることがわかりました。
しかし、以前に他のコントロールでそれを試してみてうまくいかなかったことをはっきりと覚えていたので、戻って2つのケースの違いを理解しようとしました. 基本的に、そのうちの 1 つが数レベル上のスタックパネルにあるということになりました。
そのため、一方にバインディングを使用し、もう一方に minwidth とアライメント メソッドを使用しています。とにかく、私がやっている方法が後で奇妙なバグを作成しないようにするために、これにのみ興味がありました.
幅または高さが変更されたときにレイアウトがすぐに実行されないことを望んでいますが、代わりにシステムがサイズの変更を定期的に再チェックします
wpf - wpf - バインディングの問題 ActualWidth
次の XAML コードがあります。
一部のラベルの可視性を変更し、さまざまなテキストを設定しながら(したがって、さまざまな長さ/幅.
その後、さまざまな機能があります。
- プログラムの開始時に、ラベルの「ID なし」テキストは
labelID
内部値に置き換えられます。幅が更新されます: OK - コードを実行すると、最初の 2 つのラベルの可視性が変更されます
ColumnDefinition.Width
が、更新されず、最初の 2 つのラベルのみが表示されます (4 つすべてが wrapPanel ActualWidth に収まる十分な場所がないためです:エラー! Visibility
プロパティを最初の 2 つのラベルからCollapsed
に変更すると、最初Visible
からすべてのラベルの可視性がVisible
になり、すべてのラベルが表示されます: OK- 前の状態から、最初の 2 つのラベルの可視性を に変更する
Collapsed
と、ColumnDefinition.Width
が更新され、ProgressBar
が可能な限り広くなり、すべてのテキストが表示されます。
誰でも私を助けてもらえますか?幅が更新されない理由がわかりません...
注:可視性は、次のコードを実行しているウィンドウで 2 つのボタンを使用して変更されます。
編集:私の目標は、可能な最大幅を使用して ProgressBar を表示するために、最小スペース (1 行) を使用して可視ラベルを表示することです。