1

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

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

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

4

2 回答 2

2

您应该将 Popup Window 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> 
于 2012-06-12T13:32:11.633 回答
0

我遇到了同样的问题,这解决了我的问题 https://social.msdn.microsoft.com/Forums/en-US/afa18ca4-0c4a-4a55-9d26-9c30afd4d767/wpf-combobox-closes-on-mouse-release-何时使用显示不显示对话框?forum=wpf。希望它可以帮助某人。

把文章中写的东西拿出来:

利用window.ShowDialog() instead of window.Show();

"当使用 Show() 而不是 ShowDialog() 显示包含 ComboBox 的窗口时,弹出列表将在释放鼠标后立即关闭,这与在进行选择或控件失去焦点之前保持打开状态的预期行为相反。"

于 2016-12-01T13:04:04.303 回答