【问题标题】:getting the size of the combobox's popup at runtime在运行时获取组合框弹出窗口的大小
【发布时间】:2011-04-13 15:48:15
【问题描述】:

我正在尝试获取 Silverlight ComboBox 下拉窗口的宽度和高度。 不幸的是,ActualWidthActualHeight 总是返回 0。

【问题讨论】:

    标签: silverlight popup size actualwidth actualheight


    【解决方案1】:
    <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;
    }
    

    但这不是一个好方法。

    【讨论】:

    • 谢谢,但我需要下拉菜单的大小,而不是组合框
    【解决方案2】:

    如果不实际渲染弹出窗口,您将无法获得实际大小。这意味着如果弹出窗口被隐藏,ActualSizes 将为 0。这是 WPF 为您执行布局和呈现逻辑的结果。

    您可以通过对弹出窗口本身执行Measure 传递来获得弹出窗口请求的高度。如果尚未创建弹出窗口,那么您仍然有麻烦。 (并且它可能在第一次显示之前不会被创建。)

    【讨论】:

      【解决方案3】:

      我自己找到了一个解决方案:您必须在测量之前将弹出窗口的“IsOpen”设置为 true,然后将其设置回 false。这是我让它工作的唯一方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-03
        • 1970-01-01
        • 2011-03-02
        • 2019-10-22
        • 1970-01-01
        相关资源
        最近更新 更多