Нажатие кнопки внутри UserControl не вызовет событие MouseCown UserControls - PullRequest
0 голосов
/ 28 января 2020

У меня есть Page, внутри я создаю несколько копий UserControl. Страница должна что-то делать, когда срабатывает событие UserControl_MouseDown . Все работает нормально, пока пользователь не нажмет на часть UserControl, где присутствует Control. Как и следовало ожидать, Control предотвращает запуск события UserControl_MouseDown.

Page

//Fired when the StackPanel is clicked but not when the TextBox is.
private void UserControl_MouseDown(object sender, MouseButtonEventArgs e)
{
    //Do stuff
}

UserControl

<StackPanel>
    <TextBox/>
</StackPanel>

Ответы [ 2 ]

0 голосов
/ 28 января 2020

В моем случае свойство IsHitTestVisible своего рода решило проблему.

, установив для свойства IsHitTestVisible TextBox значение False , теперь TextBox позволяет щелчок, пройти через себя, скажем так, и приземлиться на UserControl

Это означает, что TextBox Is Больше не редактируемый , хотя, так что. Поэтому мне пришлось вручную установить для этого свойства значение true после того, как StackPanel был нажат нечетное количество раз.

Wi sh хотя было и лучшее решение.

0 голосов
/ 28 января 2020

Поскольку элементы управления склонны глотать события, вы можете использовать PreviewMouseDown -Event:

<UserControl PreviewMouseDown="UserControl_MouseDown">
    <StackPanel>
        <TextBox />
    </StackPanel>
</UserControl>

Читать это: https://docs.microsoft.com/en-us/dotnet/api/system.windows.uielement.previewmousedown?view=netframework-4.8

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