如何解决 Xaml 中 Focus 启动后的 MouseEnter/MouseOver 问题?

问题描述 投票:0回答:0

大家好!, 我需要你的帮助来解决这个问题,我正在尝试用 WPF 和 XAML 语言构建我的第一个应用程序,并且 C# 也参与其中,所以这里的问题是我有一个 TextBox 并且这个文本框有一个 custom Style ,在这种风格中,除了 ControlTemplate.Triggers 之外,其他一切都很好,在它里面,我试图在 MouseEnter 或 MouseOver 时使用 ColorAnimation 改变它的颜色来制作文本框,并且它没有问题,现在我让它在鼠标结束时将动画颜色更改为另一种颜色,并在鼠标不在文本框上时返回默认颜色,好吧..现在我需要在单击按钮时将其颜色更改为更浅当专注于文本框时,为了与其他文本框不同,女巫意味着现在这是当前激活或聚焦的文本框,当我尝试这样做时,我正在改变它的颜色,而不是鼠标悬停时出现的颜色 =是的,到ExitActions中的另一种较浅的颜色, 所以它停留在那个颜色告诉焦点改变到另一件事,但这是问题:在失去焦点并通过单击按钮或其他任何东西回到文本框的默认颜色之后,每次我尝试之后使通过 MouseEnter/IsMouseOver 事件设置的颜色发生颜色变化,没有任何反应,当我将鼠标放在文本框上时没有任何反应或发生,当鼠标离开文本框时也是如此,这就是我遇到的问题解决好几天了,我不知道该怎么做,也不知道怎么解决, 对不起,如果我说得太过火了,但我只是想把我想做的事情说清楚。

对于 xaml 中的 ControlTemplate.Triggers 代码,这里是这个代码:

<ControlTemplate.Triggers>

                        <EventTrigger RoutedEvent="MouseEnter">
                            <BeginStoryboard>
                                <Storyboard>
                                    <ColorAnimation Storyboard.TargetProperty="Background.Color" 
                                                        Storyboard.TargetName="border" 
                                                        Duration="0:0:0.2" 
                                                        To="#777777">

                                    </ColorAnimation>
                                    <ColorAnimation Storyboard.TargetProperty="BorderBrush.Color" 
                                                        Storyboard.TargetName="border" 
                                                        Duration="0:0:0.2" 
                                                        To="#666666">

                                    </ColorAnimation>
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger>
                        <EventTrigger RoutedEvent="MouseLeave">
                            <BeginStoryboard>
                                <Storyboard>
                                    <ColorAnimation Storyboard.TargetProperty="Background.Color" 
                                                        Storyboard.TargetName="border" 
                                                        Duration="0:0:0.2" 
                                                        To="#676767">

                                    </ColorAnimation>
                                    <ColorAnimation Storyboard.TargetProperty="BorderBrush.Color" 
                                                        Storyboard.TargetName="border" 
                                                        Duration="0:0:0.2" 
                                                        To="#5b5b5b">

                                    </ColorAnimation>
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger>
                        
                        <EventTrigger RoutedEvent="MouseDown">
                            <BeginStoryboard>
                                <Storyboard>
                                    <ColorAnimation Storyboard.TargetProperty="Background.Color" 
                                                        Storyboard.TargetName="border" 
                                                        Duration="0:0:0.1" 
                                                        To="#777777">

                                    </ColorAnimation>
                                    <ColorAnimation Storyboard.TargetProperty="BorderBrush.Color" 
                                                        Storyboard.TargetName="border" 
                                                        Duration="0:0:0.1" 
                                                        To="#666666">

                                    </ColorAnimation>
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger>
                        <EventTrigger RoutedEvent="MouseUp">
                            <BeginStoryboard>
                                <Storyboard>
                                    <ColorAnimation Storyboard.TargetProperty="Background.Color" 
                                                        Storyboard.TargetName="border" 
                                                        Duration="0:0:0.5" 
                                                        To="#676767">

                                    </ColorAnimation>
                                    <ColorAnimation Storyboard.TargetProperty="BorderBrush.Color" 
                                                        Storyboard.TargetName="border" 
                                                        Duration="0:0:0.3" 
                                                        To="#5b5b5b">

                                    </ColorAnimation>
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger>

                        


                    </ControlTemplate.Triggers>

顺便说一句,我已经尝试了很多东西,比如使用IsFocused Property,MultiCondition等等,我希望有人能尽快帮助我解决这个问题,谢谢。

MouseOver/MouseEnter,在文本框失去焦点后无法正常工作并且不会发生。

wpf xaml triggers controltemplate
© www.soinside.com 2019 - 2024. All rights reserved.