2017-10-18 39 views
0

我一直在玩这个一段时间,我无法使它工作。基本上,我有一个图像和标签的列表框。我想是改变图像的边框的颜色,如果选择的项目(列表框设置为多选)当在列表框中选择项目时设置图像边框

这是我迄今为止...

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

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

感谢

回答

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

这是真棒!它很棒! 感谢您的帮助。 – user3212543

相关问题