我正在尝试对 WPF FrameworkElement 实现扩展方法,该方法允许用户在加载元素时仅执行一次操作。
这里的想法是,如果元素稍后被卸载然后再次加载,则不会再次调用该操作。
但是我找不到匿名事件处理程序在调用时注销自身的正确语法......
public static void ExecuteOnceWhenLoaded(
this FrameworkElement element,
Action action)
{
if(element.IsLoaded)
{
action();
}
else
{
RoutedEventHandler handler;
handler = (s, e) =>
{
element.Loaded -= handler; // ERROR: handler is not initialized
action();
}
element.Loaded += handler;
}
}