2009-07-01 8 views

Antwort

30

Wenn Sie nicht zufrieden sind mit MouseDown und MouseUp, vielleicht könnten Sie die Rectangle in einem Button gerade auf und handhaben die Button ‚s Click Veranstaltung?

<Button> 
    <Button.Template> 
     <ControlTemplate> 
      <Rectangle .../> 
     </ControlTemplate> 
    </Button.Template> 
</Button> 

Es hängt wirklich von dem Verhalten ab, das Sie anstreben. Bitte erläutern Sie, wenn es notwendig ist.

+0

Dies ist wahrscheinlich, was ich will. –

18

Um Klick Gabe zu einem Rechteck selbst hinzufügen, können Sie die InputBindings Eigenschaft verwenden:

<Rectangle Fill="Blue" Stroke="Black"> 
    <Rectangle.InputBindings> 
     <MouseBinding Gesture="LeftClick" Command="{Binding FooCommand}"/> 
    </Rectangle.InputBindings> 
</Rectangle> 

Dies bewirkt, dass der FooCommand ausgeführt werden, wenn das Rechteck geklickt wird. Praktisch, wenn Sie MVVM verwenden!

+0

Ist das .NET 4, oder funktioniert es auch in .NET 3.5? –

+0

Es ist in .NET 3.5 verfügbar: http://msdn.microsoft.com/en-us/library/system.windows.uielement.inputbindings(v=VS.90).aspx – Grokys

+1

Diese Antwort funktioniert nicht in .NET 3.5 , nur in .NET 4 und höher. In .NET 3.5 ist die Command-Eigenschaft nicht als Abhängigkeitseigenschaft registriert, daher kann sie nicht auf eine Bindung festgelegt werden. Siehe meine Frage unter http://stackoverflow.com/questions/1427638/if-we-cant-bind-a-mousebindings-command-what-are-we-supposed-to-do –

4

Ich war auf der Suche nach dem verwandten DoubleClick-Ereignis und stieß auf this suggestion, um einfach das Objekt von Interesse in ein ContentControl einzubetten.

Hier ist ihr Beispiel (mit einem Rahmen, der auch Klick/Doppelklick nicht unterstützt).

<ContentControl MouseDoubleClick="OnDoubleClick"> 
    <Border Margin="10" BorderBrush="Black" BorderThickness="2"> 
     <Grid Margin="4"> 
      <Rectangle Fill="Red" /> 
      <TextBlock Text="Hello" FontSize="15" /> 
     </Grid> 
    </Border> 
</ContentControl> 
+0

Dies funktionierte wie ein Champion. Einfach und auf den Punkt. +1 –

0

Rechteck hat Ereignis Tapped, der gut arbeitet. Beim Entwerfen von universellen Apps für Windows 8.1 gibt es neue Ereignisse. Tapped, DoubleTaped, RightTapped und Halten.