Es scheint, dass die WPF-Form Rectangle das Click-Ereignis nicht definiert hat. Was soll ich stattdessen verwenden?WPF-Rechteck hat kein Click-Ereignis
Es hat MouseUp, aber es ist nicht ganz das gleiche Verhalten.
Es scheint, dass die WPF-Form Rectangle das Click-Ereignis nicht definiert hat. Was soll ich stattdessen verwenden?WPF-Rechteck hat kein Click-Ereignis
Es hat MouseUp, aber es ist nicht ganz das gleiche Verhalten.
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.
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!
Ist das .NET 4, oder funktioniert es auch in .NET 3.5? –
Es ist in .NET 3.5 verfügbar: http://msdn.microsoft.com/en-us/library/system.windows.uielement.inputbindings(v=VS.90).aspx – Grokys
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 –
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>
Dies funktionierte wie ein Champion. Einfach und auf den Punkt. +1 –
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.
Dies ist wahrscheinlich, was ich will. –