要素が読み込まれたときにユーザーがアクションを 1 回だけ実行できるようにする拡張メソッドを WPF FrameworkElement に実装しようとしています。
ここでの考え方は、要素が後でアンロードされ、再度ロードされた場合、アクションが 2 回呼び出されないということです。
しかし、匿名イベントハンドラーが呼び出されたときに自分自身を登録解除するための適切な構文がわかりません...
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;
}
}