gpt4 book ai didi

wpf - wpf 中的弹出窗口和切换按钮交互

转载 作者:行者123 更新时间:2023-12-02 01:36:26 25 4
gpt4 key购买 nike

我有一个包含切换按钮和弹出窗口的控件。单击 ToggleButton 时,会出现弹出窗口。当 ToggleButton 未选中时,弹出窗口应关闭。此外,单击弹出窗口之外的位置应会导致其关闭,并导致切换按钮取消选中。

我通过将 Popup 的 StaysOpen 属性设置为 false,并将切换按钮的 IsChecked 属性设置为双向绑定(bind)到 Popup 的 IsOpen 属性来进行设置。

一切都很好,除了一种情况 - 选中按钮并打开弹出窗口后,单击按钮不会导致弹出窗口关闭,或者按钮返回到未选中状态。

我相信这一定是因为单击按钮会导致 Popup 的 StaysOpen 逻辑将 Popup 的 IsOpen 属性设置为 false。反过来,这会将切换按钮设置为未选中。这必须在处理我对按钮的点击之前发生 - 因此点击会重新检查按钮,即竞争条件。

知道如何获得我想要的行为吗?

最佳答案

如果您的假设是正确的,您需要一个自定义 Popup 类,如下所示:

public class MyPopup : Popup {
protected override void OnPreviewMouseLeftButtonDown(MouseButtonEventArgs e) {
bool isOpen = this.IsOpen;
base.OnPreviewMouseLeftButtonDown(e);

if (isOpen && !this.IsOpen)
e.Handled = true;
}
}

您可能需要从 if 语句中删除 !this.IsOpen。如果您改用 MyPopup,它将阻止 MouseLeftButtonDown 事件到达 ToggleButton。

关于wpf - wpf 中的弹出窗口和切换按钮交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5821709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com