2011-11-10 93 views
0

這在App.xaml<Application.Resources>定義:IsMouseOver事件不會被觸發

<Style x:Key="borderStyle" TargetType="Border"> 
    <Style.Triggers> 
     <Trigger Property="IsMouseOver" Value="True"> 
      <Setter Property="BorderBrush" Value="Red" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

我在這裏用它裏面Window1.xaml

<ListBox Name="listView1" ItemsSource="{Binding}" Background="Black" > 
      <ListBox.ItemsPanel> 
       <ItemsPanelTemplate> 
        <WrapPanel Width="{Binding (FrameworkElement.ActualWidth), RelativeSource={RelativeSource AncestorType=ScrollContentPresenter}}" Orientation="Horizontal" ItemWidth="150" ItemHeight="150" /> 
       </ItemsPanelTemplate> 
      </ListBox.ItemsPanel> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <StackPanel> 
         <Border BorderThickness="5" BorderBrush="DarkGray" Style="{StaticResource borderStyle}"> 
          <Image Width="120" Height="120" Stretch="Fill" Source="{Binding Image}" /> 
         </Border> 
         <TextBlock FontFamily="Verdana" Foreground="Orange" Text="{Binding Title}" /> 
        </StackPanel> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 

但它不工作,當我將鼠標懸停在上面時,邊框不會改變顏色。

我在做什麼錯?

謝謝。

回答

3

如果直接在邊框內定義屬性,則重寫觸發器。從該行

刪除BorderBrush="DarkGray"

<Border BorderThickness="5" BorderBrush="DarkGray" Style="{StaticResource borderStyle}"> 

,所以它看起來像這樣

<Border BorderThickness="5" Style="{StaticResource borderStyle}"> 

和setter方法添加到您的風格

<Style x:Key="borderStyle" TargetType="Border"> 
    <Setter Property="BorderBrush" Value="DarkGray" /> 
    <Style.Triggers> 
     <Trigger Property="IsMouseOver" Value="True"> 
      <Setter Property="BorderBrush" Value="Red" /> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

作爲一個經驗法則:所有特性,這應該由觸發器修改,必須在樣式中定義爲setter。

+0

是的,就是這樣,謝謝你的回答。 – Kobe