Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Classe RoutedEvent

Representa e identifica um evento roteado e declara suas características.

Namespace:  System.Windows
Assembly:  PresentationCore (em PresentationCore.dll)
XMLNS para XAML: http://schemas.microsoft.com/winfx/xaml/presentation

[TypeConverterAttribute("System.Windows.Markup.RoutedEventConverter, PresentationFramework, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Custom=null")]
public sealed class RoutedEvent
<object property="eventName"/>
- or -
<object property="type.eventName"/>

Valores de XAML

eventName

Um nome de evento não qualificados, equivalente a Name propriedade das RoutedEvent campo não o nome de membro real das RoutedEvent identificador de campo dentro de um tipo. Sem qualificação, eventName deve nomear um evento encontradas no tipo que é o TargetType do estilo corrente que contém o EventSetter ou EventTrigger.

  type

O tipo a ser usado para qualificar o nome do evento.Se fornecido sem um prefixo, tipo deve ser uma classe no namespace padrão.Para eventos personalizados ou eventos que estão em tipos fora do padrão (normalmente o padrão é o de namespace de XMLWPF espaço para nome), esse tipo pode ser prefixado com um prefixo de namespace de XML mapeado que contém o tipo com o identificador de evento roteado desejado. Para obter detalhes sobre o mapeamento de namespace, consulte Espaços de nomes XAML e mapeamentos de espaços de nomes.

Essa classe contém o Name, RoutingStrategy, HandlerType, e OwnerType Propriedades. Nenhum desses membros pode ser null.

Essa classe tem um XAML uso destinada exclusivamente para fornecer o valor da RoutedEvent propriedade de um EventTrigger (ou classe derivada), ou para o Event propriedade de um EventSetter (ou classe derivada). Para obter mais informações sobre o EventTrigger, EventSettere o XAML usos para essas classes, consulte Visão geral sobre eventos roteados.

Para que seu evento personalizado ofereça suporte a roteamento de eventos, você precisa registrar um RoutedEvent usando o método RegisterRoutedEvent. Este exemplo demonstra as noções básicas de criar um evento roteado personalizado.

Como mostrado no exemplo a seguir, você primeiro registra um RoutedEvent usando o método RegisterRoutedEvent. Por convenção, o nome do campo estático RoutedEvent deve terminar com o sufixo Event. Nesse exemplo, o nome do evento é Tap e a estratégia de roteamento do evento é Bubble. Após a chamada em que o registro é efetuado, você pode fornecer acessadores para inserção e remoção de eventos common language runtime (CLR) para o evento.

Observe que embora o evento seja gerado através do método virtual OnTap nesse exemplo específico, a maneira como você gera seu evento ou como seu evento responde a alterações depende de suas necessidades.

Observe também que esse exemplo basicamente implementa uma subclasse inteira de Button; essa subclasse é criada como um assembly separado e, em seguida, instanciada como uma classe personalizada em uma página Extensible Application Markup Language (XAML) separada. Isso é para ilustrar o conceito que controles representados por subclasses pode ser inseridos em árvores compostas de outros controles, e que nessa situação, eventos personalizados nesses controles possuem exatamente as mesmas capacidades de roteamento de eventos que um elemento nativo Windows Presentation Foundation (WPF).

PublicClass MyButtonSimple
    Inherits Button

    ' Create a custom routed event by first registering a RoutedEventID    ' This event uses the bubbling routing strategyPublicSharedReadOnly TapEvent As RoutedEvent = EventManager.RegisterRoutedEvent("Tap", RoutingStrategy.Bubble, GetType(RoutedEventHandler), GetType(MyButtonSimple))

    ' Provide CLR accessors for the eventPublic Custom Event Tap As RoutedEventHandler
        AddHandler(ByVal value As RoutedEventHandler)
            Me.AddHandler(TapEvent, value)
        EndAddHandlerRemoveHandler(ByVal value As RoutedEventHandler)
            Me.RemoveHandler(TapEvent, value)
        EndRemoveHandlerRaiseEvent(ByVal sender As Object, ByVal e As RoutedEventArgs)
            Me.RaiseEvent(e)
        EndRaiseEventEndEvent
    ' This method raises the Tap eventPrivateSub RaiseTapEvent()
        Dim newEventArgs AsNew RoutedEventArgs(MyButtonSimple.TapEvent)
        MyBase.RaiseEvent(newEventArgs)
    EndSub
    ' For demonstration purposes we raise the event when the MyButtonSimple is clickedProtectedOverridesSub OnClick()
        Me.RaiseTapEvent()
    EndSubEndClass
<Window  
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:custom="clr-namespace:SDKSampleLibrary;assembly=SDKSampleLibrary"
    x:Class="SDKSample.RoutedEventCustomApp"

    >
	<Window.Resources>
		<Style TargetType="{x:Type custom:MyButtonSimple}">
			<Setter Property="Height" Value="20"/>
			<Setter Property="Width" Value="250"/>
			<Setter Property="HorizontalAlignment" Value="Left"/>
			<Setter Property="Background" Value="#808080"/>
		</Style>
	</Window.Resources>
	<StackPanel Background="LightGray">
		<custom:MyButtonSimple Name="mybtnsimple" Tap="TapHandler">Click to see Tap custom event work</custom:MyButtonSimple>
	</StackPanel>
</Window>


Eventos tunelantes são criados da mesma maneira, mas com RoutingStrategy definida como Tunnel na chamada em que se efetua o registro. Por convenção, eventos tunelantes em WPF são prefixados com a palavra "Preview".

Para ver o exemplo completo, incluindo a implementação do verdadeiro tratador de eventos "Tap", consulte Personalizar roteada exemplo de eventos. Para ver um exemplo de como eventos bolheados funcionam, consulte Como: Handle a Routed Event.

System.Object
  System.Windows.RoutedEvent

Quaisquer membros static (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Windows Vista, Windows XP SP2, Windows Server 2003

o.NET Framework e.NET Compact Framework não oferecem suporte a todas as versões de cada plataforma. Para obter uma lista de versões suportadas, consulte Requisitos de sistema do .NET framework.

.NET Framework

Compatível com: 3.5, 3.0

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft