我重新设置了我的组合框的模板,以便下拉弹出窗口出现在组合框的原点。以下是它的完成方式:
<ControlTemplate TargetType="{x:Type ComboBox}">
<Grid>
<ToggleButton/>
<ContentPresenter/>
<Popup PlacementRectangle="0,0,0,0" >
<Grid Name="DropDown">
...
</Grid>
</Popup>
</Grid>
</ControlTemplate>
我遇到的唯一问题是,当我点击组合框时,它会自动选择鼠标结束并关闭的项目。我可以选择任何其他项目的唯一方法是按住鼠标按钮,然后将鼠标移动到所需项目上。如何解决这个问题?
答案 0 :(得分:1)
您应该将弹出窗口IsOpen属性绑定到切换按钮,如:
<ToggleButton x:Name="myToggle" ClickMode="Press" />
<Popup x:Name="Popup"
IsOpen="{Binding Path=IsChecked, ElementName=myToggle}"
PlacementRectangle="0,0,0,0"
StaysOpen="False">
</Popup>
答案 1 :(得分:0)
我遇到了同样的问题,这解决了我的问题 https://social.msdn.microsoft.com/Forums/en-US/afa18ca4-0c4a-4a55-9d26-9c30afd4d767/wpf-combobox-closes-on-mouse-release-when-using-show-not-showdialog?forum=wpf。希望它对某人有所帮助。
列出文章中的内容:
使用window.ShowDialog() instead of window.Show();
“当使用Show()显示包含ComboBox的Window时 ShowDialog()弹出列表将在鼠标出现后立即关闭 释放,违背预期的行为,直到a 进行选择或控制失去焦点。“