Кажется, что форма WPF Rectangle не определить событие Click. Что я должен использовать вместо этого?
У него есть MouseUp, но это не совсем то же самое поведение.
Кажется, что форма WPF Rectangle не определить событие Click. Что я должен использовать вместо этого?
У него есть MouseUp, но это не совсем то же самое поведение.
Если вас не устраивают MouseDown
и MouseUp
, возможно, вы могли бы просто поместить Rectangle
в Button
и обработать событие Click
Button
?
<Button>
<Button.Template>
<ControlTemplate>
<Rectangle .../>
</ControlTemplate>
</Button.Template>
</Button>
Это действительно зависит от поведения, которое вам нужно. Пожалуйста, уточните, если это необходимо.
Чтобы добавить обработку кликов к самому прямоугольнику, вы можете использовать файл InputBindings свойство:
<Rectangle Fill="Blue" Stroke="Black">
<Rectangle.InputBindings>
<MouseBinding Gesture="LeftClick" Command="{Binding FooCommand}"/>
</Rectangle.InputBindings>
</Rectangle>
Это приведет к выполнению FooCommand при щелчке прямоугольника. Удобно, если вы используете MVVM!
Я искал связанное событие DoubleClick и наткнулся на это предложение просто встроить интересующий объект в ContentControl.
Вот их пример (с рамкой, которая тоже не поддерживала щелчок/двойной щелчок).
<ContentControl MouseDoubleClick="OnDoubleClick">
<Border Margin="10" BorderBrush="Black" BorderThickness="2">
<Grid Margin="4">
<Rectangle Fill="Red" />
<TextBlock Text="Hello" FontSize="15" />
</Grid>
</Border>
</ContentControl>
Событие прямоугольника Tapped, который отлично работает. В разработке универсальных приложений для Windows 8.1 произошли новые события. Tapped, DoubleTaped, RightTapped и Hold.