WPF ListBoxItem样式不起作用

WPF ListBoxItem样式不起作用,wpf,Wpf,我在列表框的DataTemplate中有一个边框。当鼠标移到项目上时,我想显示边框。这是我的XAML: <ListBox Grid.Row="3" Grid.Column="0" ItemsSource="{Binding Devices}" SelectedItem="{Binding SelectedDevice}" MaxWidth="350"> <ListBox.R

我在列表框的DataTemplate中有一个边框。当鼠标移到项目上时,我想显示边框。这是我的XAML:

<ListBox Grid.Row="3"
            Grid.Column="0"
            ItemsSource="{Binding Devices}"
            SelectedItem="{Binding SelectedDevice}"
            MaxWidth="350">

    <ListBox.Resources>
        <Style TargetType="ListBoxItem">
            <Style.Resources>
                <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/>
                <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent"/>
                <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black"/>
            </Style.Resources>
        </Style>
    </ListBox.Resources>

    <ListBox.ItemTemplate>
        <DataTemplate>

            <Border BorderBrush="SteelBlue"
                    BorderThickness="0"
                    HorizontalAlignment="Stretch"
                    CornerRadius="3"
                    MinHeight="65"
                    Margin="3">

                <Border.Style>
                    <Style>
                        <Style.Triggers>
                            <Trigger Property="Border.IsMouseOver" Value="True">
                                <Setter Property="Border.BorderThickness" Value="1" />
                            </Trigger>
                        </Style.Triggers>
                    </Style>
                </Border.Style>

                <Grid>

                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>

                    <Image Grid.Row="0" 
                            Grid.RowSpan="2"
                            Grid.Column="0"
                            Source="/DFT.Falcon6.UI.Desktop;component/Media/Images/fc6logo.png"
                            Height="50"
                            Width="50"
                            Margin="5"/>
                    <TextBlock Grid.Row="0"
                                Grid.Column="1"
                                Text="{Binding UnitIdentifier}"
                                Style="{StaticResource devicetextStyle}"
                                Margin="2"/>
                    <TextBlock Grid.Row="1"
                                Grid.Column="1"
                                Text="{Binding IPAddress}"
                                Style="{StaticResource devicetextStyle}"
                                Margin="2"/>

                </Grid>

            </Border>

        </DataTemplate>
    </ListBox.ItemTemplate>

</ListBox>

您可以看到,我在Border控件中定义了一个触发器,用于将BorderThickness设置为1。但是,当我运行它并将鼠标移到项目上时,什么也没有发生

我做错了什么

谢谢

试试这个:

<Style>
    <Setter Property="BorderThickness" Value="0" />
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="BorderThickness" Value="1" />
         </Trigger>
    </Style.Triggers>
</Style>

样式应用于边界控件,因此无需在绑定上再次指定“Border”。我发现有时(总是?)直接在控件上定义的属性会覆盖触发器的更改。您还必须从边界控件中删除borderTickness属性


此外,在运行时请注意输出窗口。绑定错误将在应用程序中悄无声息地发生,但通常在输出窗口中显示为红色文本,这有时有助于跟踪错误。

您是否尝试将样式的TargetType设置为Border而不是Border。IsMouseOver?成功了。非常感谢。