XAML - manipulação de eventos

O conceito geral de eventos em XAML é semelhante a eventos em outras linguagens de programação populares, como .NET e C ++. No XAML, todos os controles expõem alguns eventos para que possam ser inscritos para fins específicos.

Sempre que um evento ocorre, o aplicativo será notificado e o programa pode reagir a eles, por exemplo, botões de fechamento são usados ​​para fechar um diálogo.

Existem muitos tipos de eventos que podem ser inscritos para diferentes comportamentos de um aplicativo com base nos requisitos desse aplicativo, mas os eventos mais comumente usados ​​são aqueles relacionados ao mouse e teclado, como,

  • Click
  • MouseDown
  • MouseEnter
  • MouseLeave
  • MouseUp
  • KeyDown
  • KeyUp

Neste capítulo, usaremos alguns dos eventos básicos e mais comumente usados ​​para entender como um evento de um controle específico pode ser vinculado ao código por trás de onde o comportamento será implementado, dependendo do que o usuário deseja fazer quando um evento específico ocorre.

Vamos dar uma olhada em um exemplo simples de um evento de clique de botão. A seguir, é fornecida a implementação XAML para o controle Button que é criado e inicializado com algumas propriedades e um evento Click (Click = "OnClick").

<Window x:Class = "XAMLEventHandling.MainWindow" 
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" 
   Title = "MainWindow" Height = "350" Width = "604"> 
	
   <Grid> 
      <Button x:Name = "button1" Content = "Click" Click = "OnClick" 
         Width = "150" Height = "30" HorizontalAlignment = "Center" /> 
   </Grid>
   
</Window>

Sempre que este botão for clicado, ele irá disparar um OnClickevento e você pode adicionar qualquer tipo de comportamento como uma resposta ao clique. Vamos dar uma olhada na implementação do evento OnClick, que mostrará uma mensagem quando este botão for clicado.

using System; 
using System.Windows; 
using System.Windows.Controls;  

namespace XAMLEventHandling {
   /// <summary> 
      /// Interaction logic for MainWindow.xaml 
   /// </summary> 
	
   public partial class MainWindow : Window {
      public MainWindow() { 
         InitializeComponent(); 
      }
      private void OnClick(object sender, RoutedEventArgs e) { 
         MessageBox.Show("Button is clicked!"); 
      } 
   }
}

Quando você compila e executa o código acima, ele produzirá a seguinte saída -

Ao clicar no botão, o evento click (OnClick) será disparado e a seguinte mensagem será exibida.

Agora, vamos dar uma olhada em um exemplo um pouco complexo onde vários eventos são tratados.

Exemplo

O exemplo a seguir contém uma caixa de texto com ContextMenu que manipula o texto dentro da caixa de texto.

O código XAML a seguir cria um TextBox, um ContextMenu e MenuItems com algumas propriedades e eventos, como Checked, Unchecked e Click.

<Window x:Class = "XAMLContextMenu.MainWindow" 
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" 
   Title = "MainWindow" Height = "350" Width = "604"> 
	
   <Grid> 
      <TextBox Name = "textBox1" TextWrapping = "Wrap" Margin = "10" Grid.Row = "7"> 
         Hi, this is XAML tutorial. 
         <TextBox.ContextMenu>
         
            <ContextMenu>
               <MenuItem Header = "_Bold" IsCheckable = "True" 
                  Checked = "Bold_Checked" Unchecked = "Bold_Unchecked" /> 
               <MenuItem Header = "_Italic" IsCheckable = "True" 
                  Checked = "Italic_Checked" Unchecked = "Italic_Unchecked" /> 
               <Separator /> 
               <MenuItem Header = "Increase Font Size" Click = "IncreaseFont_Click" />
               <MenuItem Header = "_Decrease Font Size" Click = "DecreaseFont_Click" /> 
            </ContextMenu> 
				
         </TextBox.ContextMenu>
      </TextBox>
   </Grid> 
	
</Window>

Aqui está a implementação em C # para os diferentes eventos que serão disparados sempre que um item de menu for marcado, desmarcado ou clicado.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data;  

namespace XAMLContextMenu { 
   /// <summary> 
      /// Interaction logic for MainWindow.xaml 
   /// </summary>
	
   public partial class MainWindow : Window {
      public MainWindow() { 
         InitializeComponent(); 
      }
      private void Bold_Checked(object sender, RoutedEventArgs e) { 
         textBox1.FontWeight = FontWeights.Bold; 
      }
      private void Bold_Unchecked(object sender, RoutedEventArgs e) { 
         textBox1.FontWeight = FontWeights.Normal; 
      }
      private void Italic_Checked(object sender, RoutedEventArgs e) { 
         textBox1.FontStyle = FontStyles.Italic; 
      }
      private void Italic_Unchecked(object sender, RoutedEventArgs e) { 
         textBox1.FontStyle = FontStyles.Normal; 
      }
      private void IncreaseFont_Click(object sender, RoutedEventArgs e) { 
         if (textBox1.FontSize < 18) { 
            textBox1.FontSize += 2; 
         } 
      }
      private void DecreaseFont_Click(object sender, RoutedEventArgs e) { 
         if (textBox1.FontSize > 10) { 
            textBox1.FontSize -= 2; 
         } 
      }
   }
}

Quando você compila e executa o código acima, ele produzirá a seguinte saída -

Recomendamos que você execute o código de exemplo acima e experimente alguns outros eventos.

Eventos

Sr. Não. Controles e descrição
1

Checked

Dispara quando um ToggleButton é verificado. (Herdado de ToggleButton)

2

Click

Ocorre quando um controle de botão é clicado. (Herdado de ButtonBase)

3

ContextMenuClosing

Ocorre antes de qualquer menu de contexto no elemento ser fechado. (Herdado de FrameworkElement.)

4

ContextMenuOpening

Ocorre quando qualquer menu de contexto no elemento é aberto. (Herdado de FrameworkElement.)

5

DataContextChanged

Ocorre quando o valor da propriedade FrameworkElement.DataContext é alterado. (Herdado de FrameworkElement)

6

DragEnter

Ocorre quando o sistema de entrada relata um evento de arrastar subjacente com este elemento como destino. (Herdado de UIElement).

7

DragLeave

Ocorre quando o sistema de entrada relata um evento de arrastar subjacente com este elemento como a origem. (Herdado de UIElement)

8

DragOver

Ocorre quando o sistema de entrada relata um evento de arrastar subjacente com este elemento como o alvo potencial para soltar. (Herdado de UIElement)

9

DragStarting

Ocorre quando uma operação de arrastar é iniciada. (Herdado de UIElement)

10

DropCompleted

Ocorre quando uma operação de arrastar e soltar é encerrada. (Herdado de UIElement)

11

DropDownClosed

Ocorre quando a parte suspensa da ComboBox é fechada.

12

DropDownOpened

Ocorre quando a parte suspensa da ComboBox é aberta.

13

GotFocus

Ocorre quando um UIElement recebe o foco. (Herdado de UIElement)

14

Holding

Ocorre quando uma interação de espera não tratada de outra forma ocorre sobre a área de teste de clique deste elemento. (Herdado de UIElement)

15

Intermediate

Dispara quando o estado de um ToggleButton é alterado para o estado indeterminado. (Herdado de ToggleButton)

16

IsEnabledChanged

Ocorre quando a propriedade IsEnabled é alterada. (Herdado do controle)

17

KeyDown

Ocorre quando uma tecla do teclado é pressionada enquanto o UIElement está em foco. (Herdado de UIElement)

18

KeyUp

Ocorre quando uma tecla do teclado é liberada enquanto o UIElement está em foco. (Herdado de UIElement)

19

LostFocus

Ocorre quando um UIElement perde o foco. (Herdado de UIElement)

20

ManipulationCompleted

Ocorre quando uma manipulação no UIElement é concluída. (Herdado de UIElement)

21

ManipulationDelta

Ocorre quando o dispositivo de entrada muda de posição durante uma manipulação. (Herdado de UIElement)

22

ManipulationInertiaStarting

Ocorre quando o dispositivo de entrada perde contato com o objeto UIElement durante uma manipulação e a inércia começa. (Herdado de UIElement)

23

ManipulationStarted

Ocorre quando um dispositivo de entrada começa uma manipulação no UIElement. (Herdado de UIElement)

24

ManipulationStarting

Ocorre quando o processador de manipulação é criado pela primeira vez. (Herdado de UIElement)

25

SelectionChanged

Ocorre quando a seleção de texto é alterada.

26

SizeChanged

Ocorre quando a propriedade ActualHeight ou ActualWidth altera o valor em um FrameworkElement. (Herdado de FrameworkElement)

27

Unchecked

Ocorre quando um ToggleButton está desmarcado. (Herdado de ToggleButton)

28

ValueChanged

Ocorre quando o valor do intervalo muda. (Herdado de RangeBase)