Как не включать большой палец в выбор ListBoxItem - PullRequest
1 голос
/ 14 июня 2010

У меня есть коллекция предметов. Я представляю элементы в WPF ListBox, используя DataTemplate. Часть DataTemplate представляет собой Thumb, который используется для изменения размера и визуального разделения между элементами. Thumb.Visibility привязано к свойству элемента (например, последний элемент не имеет видимого большого пальца).

Проблема в том, что при выборе элемента в ListBox также выбирается Thumb, поскольку он является частью ListBoxItem. Желаемое поведение - выбирать только данные без Thumb.
Как можно получить такое поведение? Я не хочу добавлять элементы по коду ListBox или обрабатывать видимость Thumb вручную. В настоящее время я получаю все это от DataTemplate.

1 Ответ

0 голосов
/ 14 июня 2010

Делайте это внутри стиля контейнера элемента, а не DataTemplate.Т.е. определите свой собственный стиль ListBoxItem и выделите только то, что требуется.Например:

<Style x:Key="MyStyle" 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="Border"
          Margin="0, 0, 0, 1"
          Padding="2"
          SnapsToDevicePixels="true">
          <ContentPresenter />
        </Border>
         <Border Grid.Row="1" BorderThickness="0, 0, 0, 1" BorderBrush="Black"
                 SnapsToDevicePixels="True"/>
        </Grid>
        <ControlTemplate.Triggers>
          <Trigger Property="IsSelected" Value="true">
            <Setter TargetName="Border" Property="Background" Value="#DDDDDD"/>
          </Trigger>
          <Trigger Property="IsEnabled" Value="false">
            <Setter Property="Foreground" Value="#888888"/>
          </Trigger>
        </ControlTemplate.Triggers>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

А затем:

<ListBox ItemContainerStyle="{StaticResource MyStyle}">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...