IsMouseOver未在Listbox ItemTemplate中触发

时间:2015-10-31 05:01:03

标签: wpf xaml listbox itemtemplate

我设法创建了一个带有Path和Textblock的ListboxItemTemplate。我已经为Path设置了样式,这样当鼠标结束时它会改变颜色。我下面的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>

当我将鼠标悬停在鼠标上时,为什么它不起作用?它的补充不会被激活。

1 个答案:

答案 0 :(得分:2)

您可能需要使用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>