Событие Silverlight MouseLeftButtonDown не сработало
Я столкнулся с проблемой, когда в событии Silverlight MouseLeftButtonDown не запускается для Button и hyperlinkButton. Похоже, это обрабатывается где-то в рамках. Как я могу переопределить это поведение
В приведенном ниже коде XAML Когда я нажимаю кнопку "Отменено", Button_MouseLeftButtonDown не запускается. Я попытался поместить текстовый блок внутри кнопки, MouseLeftButtonDown работает, когда я нажимаю на текст на кнопке, но он не всплывает до кадра
<Button Name="Cancel" ClickMode="Release" MouseLeftButtonDown="Button_MouseLeftButtonDown">
<Button.Content>
<TextBlock Name="CancelInnerText" MouseLeftButtonDown="TextBlock_MouseLeftButtonDown">Clone Page</TextBlock>
</Button.Content>
4 ответа
Чтобы все заработало, пришлось установить ClickMode="Hover" для кнопки. Теперь событие MouseLeftButtonDown запускается, а также всплывает
Вы можете вызвать метод AddHandler для события MouseLeftButtonDown (как показано ниже), и это событие будет запущено в вашем коде.
button1.AddHandler(Button.MouseLeftButtonDownEvent, new ouseButtonEventHandler(button1_MouseLeftButtonDown), true);
private void button1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
// your code
}
Да, я не уверен, зачем ты здесь. Это какая-то странная ситуация, или вы просто ищете кнопку, которая запускает событие, когда вы нажимаете на нее?
Если это просто обычная кнопка, вы обычно используете поведение по умолчанию:
<Button Name="Cancel" Click="Button_Click">
<Button.Content>
<TextBlock>Clone Page</TextBlock>
</Button.Content>
</Button>
Ты не серьезен! Что произойдет, если пользователь коснется кнопки отмены в большой форме? Просто стрельба, что связано с кнопкой отмены??
Магия связана с механизмом фокусировки, исходящим из контроля. Он будет перенаправлять все события на сфокусированный элемент (в статическом классе глубоко внутри фреймворка). И на mousebuttondown
этот фокус устанавливается через base.Focus()
;
Итак: просто переопределить MouseLeftButtonDown
и установите фокус, и все работает отлично.
Пример элемента управления, который можно разместить внутри кнопки (или шаблона кнопки):
public class InAction : ContentControl
{
public InAction()
{
this.DefaultStyleKey = typeof(InAction);
this.MouseLeftButtonDown += new MouseButtonEventHandler(InAction_MouseLeftButtonDown);
}
void InAction_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
base.Focus();
}
}