none
Wpf鼠标移动过快,样式没有切换 RRS feed

  • 问题

  •  

    样式很简单,是一个按钮的样式,然后当我在一个主窗体(全屏)弹出一个窗口,鼠标移动到这个按钮上面,然后快速鼠标移开,多试试几次应该就能重现,

    鼠标非常快速移开后,样式还是mouseover的样式,并没有切换成原来的样式,

    这样的情况,必须是主窗体全屏,鼠标从按钮移开马上脱离弹出窗体的范围,进入主窗体才会发生

    <Window.Resources>
            <Style TargetType="Button" x:Key="test">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate>
                            <Grid>
                                <Border Name="myimage" Width="100" Height="100" Background="Red"></Border>
                            </Grid>
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsMouseOver" Value="True">
                                    <Setter TargetName="myimage" Property="Background" Value="Yellow"></Setter>
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </Window.Resources>

    2018年1月13日 12:36

全部回复

  • 你好,

    >>样式很简单,是一个按钮的样式,然后当我在一个主窗体(全屏)弹出一个窗口,鼠标移动到这个按钮上面,然后快速鼠标移开,多试试几次应该就能重现,

    请问你的按钮事在主窗体,还是在弹出的窗体,你可以提供一个完整的代码吗? 以便我可以重现你的问题.

    Best regards,

    Zhanglong


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年1月15日 5:59
  • 按钮的事件在弹出框,回复较慢很不好意思 主窗体代码 <Window x:Class="WpfApp2.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfApp2" Width="280" Height="287" > <Grid x:Name="LayoutRoot"> <StackPanel> <Button Name="myButton" Click="myButton_Click">test</Button> </StackPanel> </Grid> </Window> 主窗体cs代码 public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void myButton_Click(object sender, RoutedEventArgs e) { //this.popup1.IsOpen = true; TestForm t = new TestForm(); t.ShowDialog(); } } 弹出框代码 <Window x:Class="WpfApp2.TestForm" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfApp2" mc:Ignorable="d" Title="TestForm" Height="300" Width="300"> <Window.Resources> <Style TargetType="Button" x:Key="test"> <Setter Property="Template"> <Setter.Value> <ControlTemplate> <Grid> <Border Name="myimage" Width="100" Height="100" Background="Red"> <TextBlock Name="txtContent" Text="正常情况下"></TextBlock> </Border> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter TargetName="myimage" Property="Background" Value="Yellow"></Setter> <Setter TargetName="txtContent" Property="Text" Value="鼠标移入"></Setter> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> </Window.Resources> <Grid> <Button Style="{StaticResource test}" > test</Button> </Grid> </Window>
    2018年2月3日 6:55
  • 你好,

    根据你提供的代码, 我这个是正常,没有出现你所说的情况.

    Best regards,

    Zhanglong


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年2月6日 9:13
  • 您好,谢谢您的回复

     鼠标 要快速移出弹出框,进入 主窗体界面 ,可以考虑将弹出框的宽度变小,以便鼠标能快速移动到主窗体的范围

    2018年2月7日 0:25
  • 您好,谢谢您的回复

     鼠标 要快速移出弹出框,进入 主窗体界面 ,可以考虑将弹出框的宽度变小,以便鼠标能快速移动到主窗体的范围

    2018年2月7日 0:26
  • 你好,

    根据你的描述和相关的代码,我重现了你的问题, 个人认为应该是在使用ShowDialog的时候 Winform 内部消息的响应出现问题。目前你可以使用以下的替代方案。

    1. 用t.Show() 替换 t.ShowDialog();

    2. 如果使用ShowDialog, 尽量使按钮远离边框,或者子窗体覆盖父窗体;

    Best regards,

    Zhanglong


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年2月9日 7:52
  • 你好,

           您提供了很好的解决方案,但是我个人感觉,这个可能属于框架问题,如果微软能给个解释最好了

    2018年2月10日 11:51
  • 你好,

    感谢你提供的问题,我己经反馈给微软, 但是我不确定是否在下个版本中修复它。

    Best regards,

    Zhanglong


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年2月12日 3:06
  • 你好,

    谢谢你的回复,也谢谢你把问题反馈给微软,那我后续跟进,这个问题是否有改善

    2018年2月13日 1:26