【发布时间】:2015-07-05 13:04:30
【问题描述】:
在我的应用程序中,当用户尝试单击主窗口上的滑块时,当弹出控件打开时,弹出控件会窃取鼠标按下事件。 这会导致滑块无法正确响应鼠标按下事件。 (它似乎获得焦点并移动到错误的位置)
我发现当弹出窗口的“StaysOpen”属性为假(并且弹出窗口已打开)时,滑块中的“OnPreviewMouseLeftButtonDown”不会触发, 并在其为真时(或弹出窗口关闭时)触发。
我想知道是否有人找到了解决此问题的方法。
我在我的应用程序的其他控件中遇到了这些类型的问题,在各种情况下,所以我更喜欢更通用的解决方案,而不是仅仅为滑块解决这个问题。
示例代码:
<Window x:Class="SampleApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Name="Root"
Title="MainWindow" Height="350" Width="525">
<Grid Height="130" Width="300">
<Button Width="40" Height="40" Click="ButtonBase_OnClick" HorizontalAlignment="Left" VerticalAlignment="Top"></Button>
<Popup StaysOpen="False" IsOpen="{Binding ElementName=Root, Path=IsOpen}" Width="100" Height="100"
HorizontalAlignment="Center" VerticalAlignment="Center" Placement="Center">
<Grid Background="Black">
<TextBlock Text="hello"></TextBlock>
</Grid>
</Popup>
<Slider Width="200" IsMoveToPointEnabled="True" VerticalAlignment="Bottom"></Slider>
</Grid>
谢谢你, 尤塔姆
【问题讨论】:
-
我最好的猜测是,发生这种情况是因为当单击其他内容时隐藏的弹出窗口有一个事件处理程序,它不会正确路由事件。但我也不知道如何解决这个问题wpftutorial.net/RoutedEvents.html