IsMouseOver не запускается внутри Listbox ItemTemplate

Мне удалось создать ListboxItemTemplate с путем и текстовым блоком. Я установил стили для контура, чтобы при наведении мыши он менял цвет. Мой XAML ниже:

<DataTemplate x:Key="WorkingFileTemplate">
        <Grid HorizontalAlignment="Left">
            <StackPanel Orientation="Horizontal" Height="Auto" ToolTip="{Binding Path}" HorizontalAlignment="Left">
                <Path x:Name="ButtonPath" Stroke="#FFEA3E3E" StrokeStartLineCap="Round" StrokeEndLineCap="Round" Stretch="Uniform" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="0,5.75,0,4.625" StrokeThickness="2.55" Width="11.25" Height="Auto" Data="M0,0 L25,25 M0,25 L25,0">
                    <Path.Style>
                        <Style TargetType="Path">
                            <Style.Triggers>
                                <Trigger Property="IsMouseOver" Value="True">
                                    <Setter Property="Stroke" Value="White" />
                                </Trigger>
                                <Trigger Property="IsMouseOver" Value="False">
                                    <Setter Property="Stroke" Value="#FFEA3E3E" />
                                </Trigger>
                            </Style.Triggers>
                        </Style>
                    </Path.Style>
                </Path>
                <TextBlock Text="{Binding Name}" TextTrimming="CharacterEllipsis" Margin="5,2,0,0" TextOptions.TextFormattingMode="Display" VerticalAlignment="Top" HorizontalAlignment="Stretch" FontSize="13.333" Foreground="#FFC9C9C9"/>
            </StackPanel>
        </Grid>
</DataTemplate>

Почему не работает при наведении мышки? Это stimple не активируется.


person Zer0    schedule 31.10.2015    source источник


Ответы (1)


Возможно, вам придется использовать ControlTemplate.Trigger. Здесь я добавил кнопку и получил ControlTemplate.

<Button>
     <Button.Template>
            <ControlTemplate>
                <Path x:Name="ButtonPath" Stroke="#FFEA3E3E" StrokeStartLineCap="Round" StrokeEndLineCap="Round" Stretch="Uniform" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="0,5.75,0,4.625" StrokeThickness="2.55" Width="11.25" Height="Auto" Data="M0,0 L25,25 M0,25 L25,0">
                </Path>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter TargetName="ButtonPath" Property="Stroke" Value="Blue" />
                        </Trigger>
                        <Trigger Property="IsMouseOver" Value="False">
                            <Setter TargetName="ButtonPath" Property="Stroke" Value="#FFEA3E3E" />
                        </Trigger>
                        </ControlTemplate.Triggers>
              </ControlTemplate>
    </Button.Template>
</Button>
person tgpdyk    schedule 31.10.2015
comment
Это не сработало, потому что мне нужно было что-то вроде кнопки? - person Zer0; 31.10.2015
comment
@F4z Что-то в этом роде. Другими словами, нам нужно использовать ControlTemplate.Triggers для этого требования, и мы можем сделать это в Button. Но это можно сделать для многих других элементов управления, а не только для кнопки. - person tgpdyk; 31.10.2015