【问题标题】:Transfer control to another wpf control during mousedown在 mousedown 期间将控制权转移到另一个 wpf 控件
【发布时间】:2012-02-12 23:10:31
【问题描述】:

这一次我给你一个难的:-)

目前我即将在 wpf 中开发一个用户控件。我希望此控件在此控件中的特定按钮上按下鼠标按钮后立即打开一个滑块。只要鼠标按钮仍被按下,用户就应该能够移动此滑块。

只要用户松开鼠标按钮,滑块就会消失。

我已经有一个解决方案,但它是一个非常 hacky 的解决方案,因为我是通过屏幕坐标来完成的。

有没有什么方法可以用 WPF 以愉快的方式做到这一点?

非常感谢任何帮助!

问候, 迈克尔

【问题讨论】:

    标签: wpf controls transfer mousedown


    【解决方案1】:

    请先回答这些问题

    1. 您当前的 XAMl 和代码是什么?
    2. 当滑块的指针沿其长度拖动时,您是否要一直按住按钮?
    3. 如果是这样,您是否使用了ToggleButton,因为它可以在整个过程中被按下,并且当您将其IsChecked 属性设置为 false(即当用户释放鼠标按钮时)时可以切换(未按下)。
    4. 您是否在鼠标移动、被拖动到某个元素(例如此处的滑块)上方时检查了鼠标按钮状态为Pressed(来自按钮事件参数e)?

    例如

        e.LeftButton == MouseButtonState.Pressed
    

    编辑

    与点号有关。 2....

    我建议ToggleButton 的原因是因为只有在您滑动滑块时才能按住它。否则,使用普通按钮,您可以在单击按钮时打开滑块弹出窗口,但当您移动到滑块上时,按钮将失去其Pressed 状态。

    此外,ToggleButtonIsChecked 属性可以通过两种方式绑定到滑块弹出窗口的IsOpen 属性。这样,当用户停止滑动并释放鼠标时,我们可以将弹出窗口的IsOpen 设置为 false,并且由于这两种方式绑定,这将自动unpress切换按钮。

    【讨论】:

    • 到目前为止,这是我对 XAML 部分的一部分: 这个想法是,只要我点击“SliderButton”,弹出窗口就会出现并显示滑块控件,用户只需使用老鼠。感谢您的帮助!
    • 2.是的,因为处理应该尽可能简单。我不希望用户必须按两次鼠标按钮。 3.不,我确实使用了普通按钮。使用切换按钮有什么好处? 4. 你的意思是我应该使用拖动事件来移动滑块?
    • 啊,我明白了。但问题是,只要按住鼠标按钮,我就无法控制弹出窗口中的滑块。或者是否有可能识别出鼠标光标已移入弹出窗口,然后从滑块接收适当的事件 - 即使仍然按下鼠标按钮?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-03
    • 1970-01-01
    相关资源
    最近更新 更多