Benutzerdefinierte angefügte Ereignisse in der WPF
Ich könnte immer die Terminologie ist hier falsch, aber ich denke, ich versuche zu schaffen, die eine angefügte Ereignis.
In der Oberfläche, SDK, können Sie Sachen wie tun:
<Grid Background="{StaticResource WindowBackground}" x:Name="Foo" s:SurfaceFrameworkElement.ContactChanged="Foo_ContactChanged"/>
Möchte ich ein benutzerdefiniertes Ereignis erstellen, für das ein handler Hinzugefügt werden können im XAML-Code in der gleichen Weise, aber ich habe Schwierigkeiten.
Kann ich erstellen Sie eine benutzerdefinierte weitergeleitet Ereignis, aber die XAML-intellisense nicht sehen und der event handler nicht Hinzugefügt, wenn ich nur geben Sie es regelmäßig. Hier ist mein event-definition:
public static class TagRectEvents
{
public static readonly RoutedEvent TagRectEnterEvent = EventManager.RegisterRoutedEvent(
"TagRectEnter", RoutingStrategy.Bubble, typeof( RoutedEventHandler ), typeof( TagRectEvents ) );
public static void AddTagRectEnterHandler( DependencyObject d, RoutedEventHandler handler )
{
UIElement element = d as UIElement;
if ( element == null )
{
return;
}
element.AddHandler( TagRectEvents.TagRectEnterEvent, handler );
}
public static void RemoveTagRectEnterHandler( DependencyObject d, RoutedEventHandler handler )
{
UIElement element = d as UIElement;
if ( element == null )
{
return;
}
element.RemoveHandler( TagRectEvents.TagRectEnterEvent, handler );
}
}
Bin ich nur über Sie gehen alle falsch? Alle "befestigt Verhalten" Beispiele, die ich sehe, sind Sie mehr über das hinzufügen von eine angefügte Eigenschaft, und dann Dinge, die Sie mit Elementen, die diese Eigenschaft festgelegt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie entweder keine Zuordnung der Namensraum und/oder anbringen Ereignis wie
local:TagRectEvents.TagRectEnterEvent
. Verwenden SieTagRectEnter
, und nichtTagRectEnterEvent
.Namespace-Zuordnung :
Verwendung :
Handler :
Ich Ihren code benutzt, es funktioniert einwandfrei hier.
Um das angefügte Ereignis zu zeigen, bis in Intellisense, es hat zu werden eine Klasse, die sich in einer satellite-assembly-oder .dll-Bibliothek. Der einfachste Weg, um eine Bibliothek hinzuzufügen, ist das hinzufügen eines "WPF Custom Control Library" - Projekt zu Ihrer Lösung. Mit einem Wpf-Steuerelement-Bibliothek nur sichergestellt, dass alle typischen Referenzen werden automatisch Hinzugefügt (die Sie nicht mit einer C# - Klasse Bibliothek.) Sie können löschen Sie die CustomControl1.cs nur so lange, wie Sie löschen Sie die zugehörigen Stil in Themes/Generic.xaml.