获取运行时组合框弹出窗口的大小

|| 我正在尝试获取Silverlight ComboBox的下拉窗口的宽度和高度。 不幸的是
ActualWidth
ActualHeight
总是返回0。     
已邀请:
<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;
}
但这不是一个好方法。     
如果不实际渲染弹出窗口,则无法获得实际大小。这意味着如果弹出窗口被隐藏,ActualSizes将为0。这是WPF为您执行布局和渲染逻辑的结果。 您可以通过对弹出窗口本身执行“测量”传递来获得弹出窗口的请求高度。如果尚未创建弹出窗口,则您仍然会遇到麻烦。 (它可能直到第一次显示时才被创建。)     
我自己找到了解决方案:您必须在测量之前将弹出窗口的“ IsOpen \”设置为true,然后再将其设置为false。这是我可以使其运作的唯一方法。     

要回复问题请先登录注册