Событие IsMouseOver, определенное в стиле, не вызывается - PullRequest
0 голосов
/ 10 ноября 2011

Это определено в App.xaml внутри <Application.Resources>:

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

Но это не работает, когда я намыкаю на него, рамка не меняет цвет.

Что я делаю не так?

Спасибо.

1 Ответ

3 голосов
/ 10 ноября 2011

Вы переопределяете триггер, если определяете свойство непосредственно внутри границы.

Удалить BorderBrush="DarkGray" из этой строки

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

так это выглядит

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

и добавьте сеттер в свой стиль

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

Как правило большого пальца: все свойства, которые должны быть изменены триггерами, должны быть определены как сеттеры в стиле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...