2016-12-15 22 views
1

Я реализовал ListView с некоторыми ListViewItems. ListViewItem состоит из двух меток в сетке. Чтобы не иметь подчеркивания, есть письмо, я применил исправление, установив RecognizesAccessKey в false.DoubleClick не обрабатывается ListViewItem при щелчке между ярлыками, который содержит ListViewItem

<Grid.Resources> 
    <Style x:Key="{x:Type Label}" BasedOn="{StaticResource {x:Type Label}}" TargetType="{x:Type Label}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type Label}"> 
        <Border> 
         <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalAlignment}" 
              VerticalAlignment="{TemplateBinding VerticalAlignment}" 
              Margin="5" 
              RecognizesAccessKey="False" /> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Grid.Resources> 

Я хотел бы обработать двойной щелчок на элементе ListViewItem. Добавление его в InputBindings в ListView не работает. another question here on StackOverflow обсуждает эту проблему.

Ответ на этот другой вопрос предполагает переместить его в InputBindings самого ListViewItem. Обычно это работает, но при нажатии между ярлыками двойной щелчок не обрабатывается.
Это вызвано приведенным выше кодом. Удаление маржи и наличие обеих ярлыков рядом друг с другом было бы «решением», но я хотел бы, чтобы они были близки друг к другу. Конечно, удаление кода выше полностью устраняет проблему.
Но с этим полем между ярлыками, которые не обрабатывают DoubleClick, есть пробел. Это не изменится, если маржа установлена ​​непосредственно на ярлыках.

Совершенно иное решение, предлагаемое on yet another question, заключается в реализации привязанного поведения к ListView. И да, тогда неважно, где я нажимаю, обрабатывается DoubleClick. Тем не менее, он даже обрабатывается, когда не нажимает на элемент, а где-то в ListView. ListView обычно имеет некоторое пустое пространство ниже последнего элемента, и при нажатии там DoubleClick все еще обрабатывается. Я хотел бы обрабатывать его только тогда, когда элемент зависает.

У меня нет каких-либо сильных предпочтений относительно того, где реализован DoubleClick (т. Е. Как ListView, так и ListViewItem в порядке), но я не уверен, как добиться успеха. Обе реализации имеют один недостаток, и я не понял, как обойти это.

У кого-нибудь есть идея, как получить один из двух подходов выше работы.

ответ