Выберите в любом месте границы - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь создать экран или границу, если пользователь щелкает где-нибудь внутри этой границы. Это должно повернуть мою границу цвета КРАСНЫЙ. В настоящее время у меня есть настройки XAML как ...

<StackPanel VerticalAlignment="Top" Orientation="Horizontal">
    <Border Margin="10" Padding="10" BorderBrush="Blue" BorderThickness="1" MouseDown="OnMouseDown" Width="200" Height="200">
        <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" TextWrapping="Wrap" Text="Click anywhere in here, the border should turn red" />
    </Border>
    <Border Margin="10" Padding="10" BorderBrush="Blue" BorderThickness="1" MouseDown="OnMouseDown" Width="200" Height="200">
        <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" TextWrapping="Wrap" Text="Click anywhere in here, the border should turn red" />
    </Border>
    <Border Margin="10" Padding="10" BorderBrush="Blue" BorderThickness="1" MouseDown="OnMouseDown" Width="200" Height="200">
        <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" TextWrapping="Wrap" Text="Click anywhere in here, the border should turn red" />
    </Border>
</StackPanel>

И вывод выглядит следующим образом ...

enter image description here

Проблема в том, что «Граница» не может распознать мою кнопку MouseDown. Это не регистрирует мой mousedown где-нибудь в пределах границы, но только на самой границе. Я хочу, чтобы, если пользователь щелкнул где-нибудь внутри, он изменил цвет моей границы. Как я могу это сделать?

Обратите внимание, что мне нужно в конечном итоге поместить контент внутри моей границы, будь то видео, изображения, несколько элементов управления пользовательского интерфейса или что-то еще, поэтому, если пользователь щелкает что-либо внутри этой границы, он должен "выберите" мою границу и сделайте ее красной.

Я экспериментировал с другими вещами, такими как Rectangle, но Rectangle, который я не могу использовать, потому что я не могу поместить туда другие элементы интерфейса или элемент управления.

Anyone знаете, как правильно это сделать?

Требование:

  • в пределах выделения границы, сделать границу красной.
  • в пределах выбора границы, вернуть границу синего цвета .
  • border должен в конечном итоге позволять содержимое внутри, например, текстовый блок, изображения, видео или что-либо еще.

Ответы [ 2 ]

2 голосов
/ 15 апреля 2020

Просто добавьте прозрачный фон для захвата щелчков мыши

<Border Background="Transparent" Margin="10" Padding="10" BorderBrush="Blue" BorderThickness="1" MouseDown="OnMouseDown" Width="200" Height="200">
    <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" TextWrapping="Wrap" Text="Click anywhere in here, the border should turn red" />
</Border>

Обратите внимание, что любые элементы управления внутри границы могут украсть события от границы. В этом случае вам может понадобиться прозрачная граница поверх всего или обработка перенаправленных событий. или просто используйте вместо него ToggleButton и измените его шаблон.

0 голосов
/ 15 апреля 2020
            <StackPanel VerticalAlignment="Top" Orientation="Horizontal">
            <StackPanel MouseDown="OnMouseDown">
            <Border Margin="10" Padding="10" BorderBrush="Blue" BorderThickness="1"  Width="200" Height="200">
                <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" TextWrapping="Wrap" Text="Click anywhere in here, the border should turn red" />
            </Border>
            </StackPanel>

Оберните его внутри контейнера ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...