在列表框中选择项目时设置图像边框

时间:2017-10-18 21:03:00

标签: wpf xaml

我已经玩了一段时间了,我无法让它发挥作用。基本上,我有一个带有图像和标签的列表框。如果选择该项目(列表框设置为多个选择),我想要更改图像边框的颜色

这是我到目前为止......

            <DataTemplate x:Key="ListBox_DataTemplate">
                  <Grid HorizontalAlignment="Center">
            <Grid.RowDefinitions>
                <RowDefinition Height="220"/>
            </Grid.RowDefinitions>

             <Border x:Name="thumbBorder"  BorderThickness="8"  
               CornerRadius="8">
                <Border.Style>
                    <Style TargetType="Border">


                            <Style.Triggers>
                                <DataTrigger Binding="{Binding isSelected, 
                                    ElementName=lb_images}" Value="True">
                                <Setter Property="BorderBrush 
                                              Value="SteelBlue"/>
                            </DataTrigger>
                            <DataTrigger Binding="{Binding isSelected, 
                                     ElementName=lb_images}" Value="False">
                                <Setter Property="BorderBrush" 
                                              Value="Yellow"/>
                            </DataTrigger>

                        </Style.Triggers>

                        </Style>

                    </Border.Style>

                <Image Width="170" Height="190" Source="{Binding Thumbnail}" 
HorizontalAlignment="Center" 
                                            VerticalAlignment="Top" 
x:Name="thumb"/>
            </Border> 

然而,当我选择项目时没有任何反应。我真的卡住了,所以任何想法都会受到欢迎。

由于

1 个答案:

答案 0 :(得分:0)

您的DataTrigger应使用RelativeSource绑定到ListBoxItem容器元素,并使用正确的属性路径IsSelected

<DataTemplate x:Key="ListBox_DataTemplate">
    <Border BorderThickness="8">
        <Border.Style>
            <Style TargetType="Border">
                <Setter Property="BorderBrush" Value="Yellow"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsSelected,
                                 RelativeSource={RelativeSource AncestorType=ListBoxItem}}"
                                 Value="True">
                        <Setter Property="BorderBrush" Value="SteelBlue"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Border.Style>
        <Image Source="{Binding Thumbnail}"/>
    </Border>
</DataTemplate>