WPF Rectangle не имеет события Click

Кажется, что форма WPF Rectangle не определить событие Click. Что я должен использовать вместо этого?

У него есть MouseUp, но это не совсем то же самое поведение.


person M. Dudley    schedule 01.07.2009    source источник


Ответы (4)


Если вас не устраивают MouseDown и MouseUp, возможно, вы могли бы просто поместить Rectangle в Button и обработать событие Click Button?

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

Это действительно зависит от поведения, которое вам нужно. Пожалуйста, уточните, если это необходимо.

person Kent Boogaart    schedule 01.07.2009
comment
Это, наверное, то, что я хочу. - person M. Dudley; 01.07.2009

Чтобы добавить обработку кликов к самому прямоугольнику, вы можете использовать файл InputBindings свойство:

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

Это приведет к выполнению FooCommand при щелчке прямоугольника. Удобно, если вы используете MVVM!

person Grokys    schedule 08.09.2011
comment
Он доступен в .NET 3.5: msdn.microsoft.com/en-us/library/ - person Grokys; 12.09.2011
comment
Этот ответ не работает в .NET 3.5, только в .NET 4 и более поздних версиях. В .NET 3.5 свойство Command не зарегистрировано как свойство зависимостей, поэтому для него нельзя установить привязку. См. мой вопрос по адресу stackoverflow.com/questions/1427638/ - person M. Dudley; 12.09.2011

Я искал связанное событие 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>
person mjhamre    schedule 23.07.2012

Событие прямоугольника Tapped, который отлично работает. В разработке универсальных приложений для Windows 8.1 произошли новые события. Tapped, DoubleTaped, RightTapped и Hold.

person Qerts    schedule 24.07.2014