Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获得WPF中连接到组合框的DropDownList的实际高度?_C#_Wpf_Combobox - Fatal编程技术网

C# 如何获得WPF中连接到组合框的DropDownList的实际高度?

C# 如何获得WPF中连接到组合框的DropDownList的实际高度?,c#,wpf,combobox,C#,Wpf,Combobox,我想得到组合框的实际高度加上打开时下拉框的高度。但是,组合框上似乎没有可访问的属性来提供此属性 属性只给出基本组合框的高度,而不是下拉列表 这是一个令人恼火的问题,因为我想我可以在调试器中看到属性上设置的值,但是由于某种原因,ItemsHost.ActualHeight无法在代码中访问该属性 见下文: 但是,无法从代码中访问具有下拉列表高度的ItemsHost 该属性不可访问,因为它未定义为public。您可以使用反射获取其值: 但是你不应该这样做,因为这个房产是非公有的 相反,您可以获取对

我想得到组合框的实际高度加上打开时下拉框的高度。但是,组合框上似乎没有可访问的属性来提供此属性

属性只给出基本组合框的高度,而不是下拉列表

这是一个令人恼火的问题,因为我想我可以在调试器中看到属性上设置的值,但是由于某种原因,ItemsHost.ActualHeight无法在代码中访问该属性

见下文:

但是,无法从代码中访问具有下拉列表高度的ItemsHost


该属性不可访问,因为它未定义为
public
。您可以使用反射获取其值:

但是你不应该这样做,因为这个房产是非公有的

相反,您可以获取对
组合框
弹出窗口
元素的引用,并检查其子项的
实际高度
属性,例如:

ComboBox cmb = sender as ComboBox;
double heightOfComboBox = cmb.ActualHeight;

double heightOfPopup = 0.0;
Popup popup = cmb.Template.FindName("PART_Popup", cmb) as Popup;
if (popup != null)
{
    FrameworkElement fe = popup.Child as FrameworkElement;
    if (fe != null)
        heightOfPopup = fe.ActualHeight;
}

double totalHeight = heightOfComboBox + heightOfPopup;

不确定为什么它不可访问,但请尝试获取一个项目的高度*项目数+ComboBox的高度,因为这正是我现在要做的!它可以工作,但不是完美的像素。组合框略高于下拉列表中的项目。碰巧我能够扣除实际高度的顶部和底部,以准确估计下拉列表中每个项目的高度。别担心,我投了赞成票!但我没有足够的声誉让它伤心地注册。编辑-看起来就像我从昨天开始做的一样,有我的投票权!!