Combobox自动关闭

时间:2012-06-11 00:04:37

标签: wpf combobox controltemplate

我重新设置了我的组合框的模板,以便下拉弹出窗口出现在组合框的原点。以下是它的完成方式:

<ControlTemplate TargetType="{x:Type ComboBox}">
 <Grid>
  <ToggleButton/>
  <ContentPresenter/>
  <Popup PlacementRectangle="0,0,0,0" >
   <Grid Name="DropDown">
    ...
   </Grid>
  </Popup>
 </Grid>
</ControlTemplate>

我遇到的唯一问题是,当我点击组合框时,它会自动选择鼠标结束并关闭的项目。我可以选择任何其他项目的唯一方法是按住鼠标按钮,然后将鼠标移动到所需项目上。如何解决这个问题?

2 个答案:

答案 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   进行选择或控制失去焦点。