Saya telah membuat pengendali acara khusus di kontrol pengguna saya:
public partial class FooControl
{
public event RoutedEventHandler AddFoo;
private void AddFoo_Click(object sender, RoutedEventArgs e)
{
if (AddFoo != null)
AddFoo(this, new RoutedEventArgs());
}
}
ketika saya ingin menangani acara seperti ini, semuanya berfungsi dengan baik:
<controls:FooControl AddFoo="FooControl_OnAddFoo"/>
Saya ingin melakukannya seperti itu tetapi kemudian ada sesuatu yang mogok dan saya tidak tahu mengapa.
<Style TargetType="controls:FooControl">
<EventSetter Event="AddFoo" Handler="Event_AddFoo"/>
</Style>
Informasi lebih lanjut: editor menggarisbawahi AddFoo di EventSetter dan berkata
- acara "AddFoo" bukan acara yang dialihkan
- bidang deskriptor acara yang diarahkan "AddFooEvent" tidak ada
- memunculkan pengecualian: Pengecualian muncul: 'System.Windows.Markup.XamlParseException' di PresentationFramework.dll
- pengecualian dalam mengatakan nilai tidak boleh nol
EDIT:
public static readonly RoutedEvent AddEvent =
EventManager.RegisterRoutedEvent
("AddEvent", RoutingStrategy.Bubble,
typeof(RoutedEventHandler), typeof(FooControl));
public event RoutedEventHandler AddFoo
{
add { AddHandler(AddEvent, value); }
remove { RemoveHandler(AddEvent, value); }
}
void RaiseAddEvent()
{
RoutedEventArgs newEventArgs = new RoutedEventArgs(FooControl.AddEvent);
RaiseEvent(newEventArgs);
}
private void AddFoo_Click(object sender, RoutedEventArgs e)
{
RaiseAddEvent();
}
EventSetter
hanya mendukung acara yang dirutekan. Acara Anda adalah acara CLR biasa. Anda dapat mengonversi acaraAddFoo
menjadi acara yang dirutekan. - person dymanoid   schedule 11.01.2019