当前位置: 首页 > 编程语言 > C#

WPFComboBoxMaxDropDownItems分享

时间:2023-04-10 15:28:53 C#

WPFComboBoxMaxDropDownItemsWPF中有没有设置最大下拉项数量而不是最大下拉高度?谢谢!-Kevin如果您所有的物品都具有相同的高度,这个问题可能有意义。否则,当您上下滚动ComboBox以查看项目列表的不同部分时,您的ComboBox将随着滚动而变得越来越小。如果所有项目的高度都相同,则使用附加属性很容易做到这一点:}publicstaticvoidSetMaxDropDownItems(DependencyObjectobj,intvalue){obj.SetValue(MaxDropDownItemsProperty,value);}publicstaticreadonlyDependencyPropertyMaxDropDownItemsProperty=DependencyProperty.RegisterAttached("MaxDropDownItems",typeof(int),typeof(ComboBoxHelper),newPropertyMetadata{PropertyChangedCallback=(obj,e)=>{varbox=(ComboBox)obj;box.DropDownOpened+=UpdateHeight;if(box.IsDropDownOpen)UpdateHeight(box,null);}});privatestaticvoidUpdateHeight(objectsender,EventArgse){varbox=(ComboBox)sender;box.Dispatcher.BeginInvoke(DispatcherPriority.Input,newAction(()=>{varcontainer=box.ItemContainerGenerator.ContainerFromIndex(0)asUIElement;if(container!=null&&container.RenderSize.Height>0)box.MaxDropDownHeight=container.RenderSize.Height*GetMaxDropDownItems(box);}));}}有了这个属性,你可以这样写:没有直接的方法可以说显示X个项目你必须使用MaxDropDownHeight属性来限制它的大小。由于此属性不是由控件计算的并且是完全可自定义的,您可以编写一些东西来计算项目的高度,然后根据要显示的最大项目多次计算,然后根据它设置MaxDropDownHeight。我有一个类似的问题,组合框下拉列表不会占用整个垂直空间-尽管有足够的垂直空间容纳20个项目,但我会在3或4个项目之后得到垂直滚动条。我创建了一个tempList并将组合框项添加到该列表。将此tempList分配给ComboBox的ItemsControl绑定,它给出组合框的初始下拉高度。现在组合框可以显示20个没有垂直滚动条的项目。MaxDropDownHeight在初始化视图之前和之后都不起作用。希望它能帮助别人!谢谢RDV以上是C#学习教程:WPFComboBoxMaxDropDownItems分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处: