2015-10-31 5 views
0

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

<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> 

Почему это не работает, когда я наведите курсор мыши? Это стимулирование не активируется.

ответ

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> 
+0

Да! Это сработало. Большое спасибо. – Zer0

+0

Неужели это не работает, потому что мне нужно что-то вроде кнопки? – Zer0

+0

@ F4z Что-то в этом роде. Другими словами, нам нужно использовать ControlTemplate.Triggers для этого требования, и мы можем сделать это в Button. Но это может быть сделано для многих других элементов управления, а не только кнопки. – tgpdyk