ListBoxItem上的WPF弹出窗口
我有一个小工具栏弹出窗口,它显示在ListBoxItem的鼠标上方,它需要显示在该项目的正下方。 (鼠标悬停触发器还设置项目的IsSelected属性) 我尝试了两种选择:ListBoxItem上的WPF弹出窗口,wpf,xaml,listbox,popup,Wpf,Xaml,Listbox,Popup,我有一个小工具栏弹出窗口,它显示在ListBoxItem的鼠标上方,它需要显示在该项目的正下方。 (鼠标悬停触发器还设置项目的IsSelected属性) 我尝试了两种选择: 在items数据模板上定义弹出窗口 在控件模板上为ListBoxItem定义弹出窗口 两个选项都很好,但是我想知道是否每次都会重新创建弹出窗口?? (请告知) 我认为最好在包含ListBox的ControlTemplate中定义弹出窗口,而不是ListBoxItem? 我尝试了这个方法,但找不到相对于SelectedItem
Michael。在这两种情况下,会为每个列表框项目创建一次弹出窗口
我不建议对列表框的CotnrolTemplate中的所有项目使用单一弹出窗口,因为这会使事情变得非常复杂。但是如果您仍然想这样做,您可以在弹出窗口上设置
Placement=“Custom”
,并指定CustomPopupPlacementCallback
。在该回调中,您可以使用当前所选项目的位置计算位置。最好将弹出窗口保留在项目数据模板中。除非您的列表框中有数千个项目和一个非常详细的弹出窗口,否则您不应该有任何性能问题。谢谢Pavlo&Bob。好的,因为我的列表框很小,我想最好还是回到datatemplate选项。我开始挂接命令,并意识到这可能会更容易。。。(只是我将为单个controltemplate提供大约30个不同的数据模板,并考虑重用…)