2016-12-15 5 views
1

Ich habe ein ListView mit einigen ListViewItems implementiert. Ein ListViewItem besteht aus zwei Labels in einem Raster. Um keinen Unterstrich zu erhalten, habe ich einen Fix implementiert, der RecognizesAccessKey auf false setzt.DoubleClick wird nicht in ListViewItem behandelt, wenn zwischen Labels geklickt wird, die das 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> 

Ich würde gerne einen Doppelklick auf ein ListViewItem behandeln. Das Hinzufügen zu den InputBindings der ListView funktioniert nicht. Es gibt another question here on StackOverflow, die dieses Problem diskutieren.

Die Antwort auf diese andere Frage schlägt vor, es zu den InputBindings des ListViewItem selbst zu verschieben. Dies funktioniert normalerweise, aber wenn Sie zwischen den Labels klicken, wird der Doppelklick nicht behandelt.
Dies wird durch den oben gezeigten Code verursacht. Das Entfernen des Randes und das nebeneinander liegen der beiden Labels wäre eine "Lösung", aber ich möchte, dass sie nahe beieinander liegen. Natürlich beseitigt das Entfernen des obigen Codes das Problem ebenfalls.
Aber mit diesem Rand gibt es etwas Abstand zwischen den beiden Labels, die nicht mit DoubleClick umgehen. Dies würde sich nicht ändern, wenn der Rand direkt auf die Etiketten gesetzt wird.

Eine komplett andere Lösung, die on yet another question vorgeschlagen wird, besteht darin, ein angehängtes Verhalten zu dem ListView zu implementieren. Und ja, dann ist es egal, wo ich klicke, das DoubleClick wird behandelt. Es wird jedoch sogar gehandhabt, wenn nicht auf ein Element, sondern irgendwo in der ListView geklickt wird. In der ListView befindet sich normalerweise ein leerer Bereich unterhalb des letzten Elements, und wenn Sie dort klicken, wird DoubleClick weiterhin verarbeitet. Ich möchte es nur behandeln, wenn ein Gegenstand schwebt.

Ich habe keine starke Präferenz in Bezug auf wo das DoubleClick implementiert ist (d. H. Sowohl ListView als auch ListViewItem ist in Ordnung), aber ich bin mir nicht sicher, wie beide funktionieren. Beide Implementierungen haben diesen Nachteil und ich habe nicht herausgefunden, wie ich es umgehen kann.

Hat jemand eine Idee, wie man einen der beiden oben genannten Ansätze funktioniert.

Antwort

Verwandte Themen