0

SilverlightComboBoxのドロップダウンウィンドウの幅と高さを取得しようとしています。残念ながらActualWidthActualHeight常に0を返しています。

4

3 に答える 3

2
<ComboBox x:Name="comboBox" Height="20" Width="120">
    <ComboBox.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel SizeChanged="StackPanel_SizeChanged"/>
        </ItemsPanelTemplate>
    </ComboBox.ItemsPanel>
</ComboBox>

private void StackPanel_SizeChanged(object sender, SizeChangedEventArgs e)
{
   var w=   e.NewSize.Width;
   var h=  e.NewSizeHeight;
}

しかし、それは良い方法ではありません。

于 2011-04-13T19:47:53.197 に答える
1

ポップアップを実際にレンダリングしないと、実際のサイズを取得することはできません。これは、ポップアップが非表示の場合、ActualSizesが0になることを意味します。これは、WPFがレイアウトとレンダリングロジックを実行した結果です。

ポップアップ自体に対してMeasureパスを実行することで、ポップアップの要求された高さを取得できる可能性があります。ポップアップがまだ作成されていない場合でも、問題は発生します。(また、最初に表示されるまで作成されない場合があります。)

于 2011-04-15T14:35:15.417 に答える
0

私は自分でこれに対する解決策を見つけました。測定する前にポップアップの「IsOpen」をtrueに設定してから、falseに戻す必要があります。それは私がそれを機能させることができる唯一の方法です。

于 2011-04-15T13:26:45.180 に答える