Могу ли я определить, какое перенаправленное событие из триггеров, вызвавших изменение свойства из кода в WPF? - PullRequest
0 голосов
/ 02 марта 2020

У меня есть триггер в стиле ниже в XAML, изменяющий свойство на основе перенаправленного события, которое работает правильно.

        <Style.Triggers>
            <EventTrigger RoutedEvent="MouseDown">
                <BeginStoryboard>
                    <Storyboard>
                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background">
                            <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{StaticResource ThumbnailItemBackgroundSelected}"/>
                        </ObjectAnimationUsingKeyFrames>
                    </Storyboard>
                </BeginStoryboard>
                <BeginStoryboard>
                    <Storyboard>
                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush">
                            <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{StaticResource ThumbnailItemBorderSelected}"/>
                        </ObjectAnimationUsingKeyFrames>
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
            <EventTrigger RoutedEvent="MouseEnter">
                <BeginStoryboard>
                    <Storyboard>
                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background">
                            <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{StaticResource ThumbnailItemBackgroundMouseHover}"/>
                        </ObjectAnimationUsingKeyFrames>
                    </Storyboard>
                </BeginStoryboard>
                <BeginStoryboard>
                    <Storyboard>
                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush">
                            <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{StaticResource ThumbnailItemBorderMouseHover}"/>
                        </ObjectAnimationUsingKeyFrames>
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Style.Triggers>

Я хотел бы получить событие, которое вызвало изменение свойства в OnPropertyChanged, но я не получил подробности об этом в событии переопределения.

 protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e)
 {
     if(e.Property.Name == "Background") {}
 }

Могу ли я определить, какое перенаправленное событие (MouseDown или MouseEnter) вызвало изменение свойства (например, фона) из кода любым способом

1 Ответ

0 голосов
/ 02 марта 2020

Вы не можете получать события MouseEnter и MouseDown, используя OnPropertyChanged. Вы должны использовать события MouseEnter и MouseDown соответственно и вызывать свой код внутри этих событий соответственно. Вот так: ниже Input => это TextBox

private void Input_MouseEnter(object sender, MouseEventArgs e){
Input.Text = "Mouse Entered";}

private void Input_MouseLeave(object sender, MouseEventArgs e){
Input.Text = "Mouse Left";}
...