UIElement
のサイズはメモリにあり、まだレンダリングされていませんか?WPF - メモリ内のUIElementのサイズを取得しますか?
私は現在DataTable
からGrid
を作成してから、FixedDocument
にグリッドを追加するルーチンを持っています。必要に応じて、ポートレートから風景に自動的に切り替えたいので、Grid
のサイズを知る必要があります。グリッドのFontSize
を変更することもできます。
UIElement
のサイズはメモリにあり、まだレンダリングされていませんか?WPF - メモリ内のUIElementのサイズを取得しますか?
私は現在DataTable
からGrid
を作成してから、FixedDocument
にグリッドを追加するルーチンを持っています。必要に応じて、ポートレートから風景に自動的に切り替えたいので、Grid
のサイズを知る必要があります。グリッドのFontSize
を変更することもできます。
強制的にアイテムのレンダリングを行うか、アイテムのレンダリングを待つ必要があります。その後、ActualHeight
とActualWidth
のプロパティを使用できます。
レンダリング強制する:この例で
MenuItem item = new MenuItem();
item.Header = "bling";
item.Icon = someIcon;
//Force render
item.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
item.Arrange(new Rect(item.DesiredSize));
をMenuItem
は、明示的な高さまたは幅を与えられていません。ただし、レンダリングを強制すると、提供されたヘッダーテキストとアイコンを考慮して描画されます。
明示的にWidth
またはHeight
が設定されている場合にのみ、これを判断できます。それでも、シナリオによっては、レイアウトパスがレンダリングされるまで発生せず、ActualWidth
/ActualHeight
が設定されるため、レンダリング時に変更されることがあります。
私の唯一の選択肢は、異なるフォントサイズとページレイアウトを使用してコントロールが収まるまで繰り返しコントロールをレンダリングすることです。 –
@ソニー:それを他の場所にレンダリングする... RenderTargetBitmapなどを使って "スクリーンから外し"てレンダリングしようとすると、ユーザーに見せたくない場合は調整することができます。 .. –
'MenuItem'は私のためには機能しませんでしたが、' StackPanel'や 'Viewbox'はしました。 – vossad01
クラス 'UIElement'に 'ActualWidth'というプロパティはありません:-( – Boris
はい、これは私のために働いていました。これは私のために働いていました..... –