Эффект наведения на мышиные события и отключение при IsSelected (UserControl, WPF) - PullRequest
0 голосов
/ 11 января 2019

Я хочу навести эффект при наведении мыши и на прозрачный при наведении мыши. Но отключить эту анимацию, когда UserControl IsSelected (свойство viewmodel).

У меня есть некоторый рабочий код, но это не то, что я хочу. И у меня есть некоторые проблемы. Когда анимация мыши запускается и запускается, пользовательский контроль устанавливает белый фон и быструю анимацию в цвете, что мне нужно. И эта анимация воспроизводится, когда IsSelected true тоже Мне это не нужно.

<UserControl.Resources>
        <Style x:Key="ContentStyle" TargetType="{x:Type ContentControl}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ContentControl}">

                        <!-- Content -->
                        <Border x:Name="background" Background="#2b2d33">

                            <!-- Click to open message -->
                            <Border.InputBindings>
                                <MouseBinding MouseAction="LeftClick" Command="{Binding GoToChat}" />
                            </Border.InputBindings>

                            <Grid x:Name="container" Background="Transparent">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="Auto" />
                                    <ColumnDefinition Width="*" />
                                </Grid.ColumnDefinitions>


                                <Border Grid.Column="0" 
                                    Padding="8 15"
                                    >

                                    <Border Height="40" Width="40" CornerRadius="50,50,50,50">
                                        <Border.Background>
                                            <ImageBrush ImageSource="{Binding Photo}"/>
                                        </Border.Background>
                                    </Border>
                                </Border>

                                <!-- Main content -->
                                <Border Grid.Column="1" Padding="0 0 15 0">
                                    <StackPanel VerticalAlignment="Center">
                                        <!-- Name-->
                                        <TextBlock Text="{Binding Name}"
                                                Padding="0 0 0 2"
                                                Foreground="{StaticResource WordBlueBrush}"
                                                TextTrimming="CharacterEllipsis"
                                                FontFamily="{StaticResource Amsterdam}"
                                                />
                                        <!-- Message -->
                                        <TextBlock Text="{Binding Message}"
                                               Padding="0 2 0 0"
                                               Foreground="{StaticResource ForegroundDarkBrush}"
                                               TextTrimming="CharacterEllipsis"
                                               FontFamily="{StaticResource Amsterdam}"
                                               />

                                    </StackPanel>
                                </Border>

                            </Grid>
                        </Border>

                        <!-- Hover effect -->
                        <ControlTemplate.Triggers>

                            <DataTrigger Binding="{Binding IsSelected}" Value="True">
                                <Setter Property="Background" TargetName="background" Value="#40444c"/>
                            </DataTrigger>

                            <EventTrigger RoutedEvent="MouseEnter">
                                <BeginStoryboard>
                                    <Storyboard>
                                        <ColorAnimation To="#33363d" Duration="0:0:0.3" Storyboard.TargetName="container" Storyboard.TargetProperty="Background.Color" />
                                    </Storyboard>
                                </BeginStoryboard>
                            </EventTrigger>
                            <EventTrigger RoutedEvent="MouseLeave">
                                <BeginStoryboard>
                                    <Storyboard>
                                        <ColorAnimation To="Transparent" Duration="0:0:0.3" Storyboard.TargetName="container" Storyboard.TargetProperty="Background.Color" />
                                    </Storyboard>
                                </BeginStoryboard>
                            </EventTrigger>
                        </ControlTemplate.Triggers>

                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </UserControl.Resources>

    <ContentControl Style="{StaticResource ContentStyle}" />
</UserControl>
...