50

私は現在、WPF で s を使用していますが、およびプロパティに関しては、 および と呼ばれる他の 2 つのプロパティもあることPanelに気付きました。WidthHeightActualWidthActualHeight

ActualWidth

この要素のレンダリングされた幅を取得します。これは依存プロパティです。(FrameworkElement から継承されます。)

Width

要素の幅を取得または設定します。これは依存プロパティです。(FrameworkElement から継承されます。)

参考:MSDN

2つの違いと、どちらをいつ使用するかを誰かが指摘できますか?

4

7 に答える 7

75

Width/Heightは、要求されたサイズまたはレイアウトサイズです。Auto に設定するとdouble.NaN、コード ビハインドでプロパティにアクセスしたときの値になります。

ActualWidthRenderSizeSize型であるため、 /ActualHeightRenderSize.Width/RenderSize.Heightの両方が要素のレンダリングされたサイズを返します。アイテムの実際のサイズが必要な場合は、これらの属性のいずれかを使用します。

于 2009-03-03T19:48:57.890 に答える
11

ActualWidthある要素の幅または高さを別の要素にバインドする場合に最も便利です。

この単純な例では、2 つのボタンを並べて配置し、その下に 2 つのボタンを含む StackPanel の幅に制限されたコメントを配置しています。

<StackPanel>

    <StackPanel Margin="0,12,0,0" Orientation="Horizontal" Name="buttonPanel" HorizontalAlignment="Left" >
         <Button Content="Yes - Arm the missile" FontWeight="Bold" HorizontalAlignment="Left"/>
         <Button Content="No - Save the world" HorizontalAlignment="Left" Margin="7,0,0,0"/>
    </StackPanel>

    <TextBlock Text="Please choose whether you want to arm the missile and kill everybody, or save the world by deactivating the missile." 
               Width="{Binding Path=ActualWidth,ElementName=buttonPanel}" Margin="0,5,0,0" HorizontalAlignment="Left" TextWrapping="Wrap"/>

</StackPanel>
于 2010-10-25T02:34:56.933 に答える
7

ActualWidth値のパディングを考慮しているため、その数値を知る必要があるときはいつでもActualwidth、幅の代わりに呼び出すことができ、計算を回避できます。

編集: ActualWidth の一部ではない Margin b/c を削除しました。

于 2010-10-21T16:20:57.040 に答える
3

ActualWidthレンダリング システムによって設定され、他の要素の幅や全体的なサイズの制約によって異なる場合があります。その結果、変更することはできません。Width変更可能なプロパティであり、要素の幅を増減するために使用する必要があります。

MSDNから:

このプロパティは、他の幅入力とレイアウト システムに基づいて計算された値です。Widthこの値は、実際のレンダリング パスに基づいてレイアウト システム自体によって設定されるため、入力変更の基になるプロパティなどの設定値からわずかに遅れる場合があります。

于 2009-03-03T19:46:41.237 に答える
0

まさに、レンダリング幅 != レイアウト幅です。1 つはレイアウト用で、もう 1 つはレンダリング用です。WinForms と同様に、Size プロパティと ClientSize プロパティがありましたが、これらはわずかに異なり、レンダリングの Atual/Client サイズとレイアウトの Width/Height を使用する必要があります。

于 2009-03-03T19:47:11.030 に答える
0

Widthプロパティは設定できますが、プロパティは設定できませんActualWidth

Widthプロパティは、パネルのレンダリング方法を決定するために使用され、使用さActualWidthれた実際の幅に設定されます。これは、子要素のサイズと親要素からの制限によっては、Width と同じ値にならない場合があります。

ActualWidthプロパティを設定してもすぐには設定されませんが、Widthレンダリング中に (1 回以上) 更新されます。

于 2009-03-03T19:52:28.680 に答える