WPF popup staysopen = false仍然会在外部单击时保持弹出窗口打开

我的问题是我在弹出窗口中创建了一个列表框,并设置了弹出窗口的staysopen = false。 但每次弹出框弹出时,我必须单击弹出窗口内的某些内容(如选择列表框中的元素),然后在弹出窗口外单击,它将自动关闭。 如果我没有点击任何内容,即使我点击弹出窗口之外的其他元素,弹出窗口也会保持打开状态。 我需要关闭弹出窗口而不需要单击其中的任何元素。 我能做什么? 这是代码,这个代码有一些其他样式链接,但只是一些颜色样式。

我的控件是当用户单击弹出框顶部的文本框时,列表框会弹出。 如果用户不执行任何操作并单击此元素外的任何位置,则弹出框将关闭。 谢谢。

我可以使用以下代码在Silverlight中完成它。 但似乎在wpf中,它不再起作用了。

popupAncestor = FindHighestAncestor(this.ListBoxPopup); if (popupAncestor == null) { return; } popupAncestor.AddHandler(System.Windows.Controls.Primitives.Popup.MouseLeftButtonDownEvent, (MouseButtonEventHandler)ClosePopup, true);

             <!---->                   

您应该在视图模型中创建依赖项属性或控制“IsPopupOpen”,如下所示,以管理弹出窗口的状态。 然后你可以将ToggleButton“IsChecked”和弹出“IsOpen”绑定到该DP。

同样在你的ToggleButton上,设置“Focusable = false”和“IsThreeState = false”

  public bool IsDropDownOpen { get { return (bool)GetValue(IsDropDownOpenProperty); } set { SetValue(IsDropDownOpenProperty, value); } } public static readonly DependencyProperty IsDropDownOpenProperty = DependencyProperty.Register("IsDropDownOpen", typeof(bool), typeof(Window), new UIPropertyMetadata(false)); 

祝好运!