2015-01-21 4 views
1

Я изменил стиль ItemContainerStyle и был результат:Проблем с выбором ListBoxItem когда ItemContainerStyle было изменено

enter image description here

Я наслаждался результатом, но при тестировании юзабилити я заметил, что когда я выбираю область без текст или изображение (красная область на изображении), «IsSelected» не срабатывает и не выбирает элемент. Без изменения стиля этот вопрос не возникает.

Кто-то знает причину, как исправить эту проблему?

Вот мой XAML код:

<DockPanel> 
    <ListBox x:Name="lvCustomers" Margin="0" BorderThickness="0" SelectionMode="Single" 
       VerticalAlignment="Stretch" HorizontalContentAlignment="Stretch" 
       ScrollViewer.VerticalScrollBarVisibility="Auto" Background="{x:Null}" > 
     <ListBox.ItemContainerStyle> 
      <Style TargetType="{x:Type ListBoxItem}"> 
       <Setter Property="SnapsToDevicePixels" Value="True"/> 
       <Setter Property="OverridesDefaultStyle" Value="True"/> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="{x:Type ListBoxItem}"> 
          <Grid> 
           <Border Name="BackgroundBorder" SnapsToDevicePixels="True"/> 
           <Border Name="Border"> 
            <ContentPresenter /> 
           </Border> 
          </Grid> 
          <ControlTemplate.Triggers> 
           <Trigger Property="IsSelected" Value="True"> 
            <Setter TargetName="BackgroundBorder" Property="Background" Value="Black" /> 
            <Setter TargetName="BackgroundBorder" Property="Opacity" Value="0.5" /> 
           </Trigger> 
           <MultiTrigger> 
            <MultiTrigger.Conditions> 
             <Condition Property="IsSelected" Value="True"/> 
             <Condition Property="IsFocused" Value="False"/> 
            </MultiTrigger.Conditions> 
            <Setter TargetName="BackgroundBorder" Property="Background" Value="Black" /> 
           </MultiTrigger> 
          </ControlTemplate.Triggers> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 
     </ListBox.ItemContainerStyle> 

     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <DockPanel Margin="10,0,0,5" HorizontalAlignment="Stretch"> 
        <DockPanel Margin="0,10,10,10" DockPanel.Dock="Left" HorizontalAlignment="Stretch"> 
         <TextBlock FontWeight="Bold" Foreground="White" x:Name="customerDetailsName" Text="{Binding Name}" FontSize="16" DockPanel.Dock="Top"/> 
         <DockPanel DockPanel.Dock="Top"> 
          <TextBlock Foreground="White" x:Name="customerDetailsCityContent" Text="{Binding City}" FontSize="14" /> 
          <TextBlock Foreground="White" x:Name="customerDetailsBarraContent" Text="-" FontSize="12" /> 
          <TextBlock Foreground="White" x:Name="customerDetailsStateContent" Text="{Binding Region}" FontSize="14" /> 
         </DockPanel> 
         <TextBlock Foreground="White" x:Name="customerDetailsCNPJContent" Text="{Binding CNPJ}" FontSize="14" /> 
        </DockPanel> 
        <Image x:Name="customerImageStatus" Source="{Binding StatusImage}" Width="22" Height="22" Margin="10,0,25,0" DockPanel.Dock="Right" HorizontalAlignment="Right" /> 
       </DockPanel> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 

</DockPanel> 

Спасибо заранее.

+1

Да! Это верно! Большое спасибо. –

+0

Добро пожаловать! –

ответ

1

Попробуйте установить Background = "Transparent" или IsHitTestVisible = "True" на сетку и границу в контрольной таблице. Что касается достижения теста на получение прозрачного объекта, вы должны установить фон в прозрачный.

 Смежные вопросы

  • Нет связанных вопросов^_^