如何将Popup正确绑定到ToggleButton?
我试图从用户界面级别做一些看起来相对简单和逻辑的东西,但我有一个非常烦人的错误。 我有一个ToggleButton
,我试图在按钮切换时显示一个Popup
窗口,并在按钮切换时隐藏Popup
窗口。 当用户点击它时, Popup
也会隐藏。
使用以下XAML时,一切都按预期工作,除非在Popup
窗口显示后单击切换按钮, Popup
窗口会在一瞬间消失,然后重新出现。
我怀疑这里发生了什么是点击远离Popup
窗口导致它关闭按钮然后立即切换按钮,鼠标点击它。 我只是不知道如何修复它。
任何帮助表示赞赏。 谢谢。
This is a test
Stephans的答案有一个缺点,即每当它失去焦点时关闭弹出窗口的所需行为也会消失。
当弹出窗口打开时,我通过禁用切换按钮解决了这个问题。 另一种方法是使用IsHitTestVisible属性而不是启用:
This is a test
转换器看起来像这样:
public class BoolToInvertedBoolConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value is bool) { bool boolValue = (bool)value; return !boolValue; } else return false; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException("ConvertBack() of BoolToInvertedBoolConverter is not implemented"); } }
没有IValueConverter的解决方案:
This is a test
在ToggleButton上设置Property ClickMode="Press"
apixeltoofar
为您的Popup
设置StaysOpen="True"
来自MSDN :
获取或设置一个值,该值指示当控件不再处于焦点时是否关闭Popup控件。
[…]
当
IsOpen
属性设置为false
时,如果Popup
控件关闭,IsOpen
false
;IsOpen
为false
。如果
Popup
控件在Popup
控件外发生鼠标或键盘事件时关闭,则返回false
。