Using the Shown Event.
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); var eventExtend = this.EventExtend(); eventExtend.AddShownEventHandler(this.MainWindow_Shown); } public void MainWindow_Shown(object sender, EventArgs e) { } }
Fire the Shown Event using the LayoutUpdated Event.
public class FrameworkElementEventExtend { public event EventHandler Shown; private bool initialized; private readonly FrameworkElement frameworkElement; public FrameworkElementEventExtend(FrameworkElement frameworkElement) { this.frameworkElement = frameworkElement; this.frameworkElement.LayoutUpdated += FrameworkElement_LayoutUpdated; } private void FrameworkElement_LayoutUpdated(object sender, EventArgs e) { if (!this.initialized && (this.frameworkElement.ActualHeight > 0 || this.frameworkElement.ActualWidth > 0)) { this.Shown?.Invoke(this, EventArgs.Empty); this.initialized = true; this.frameworkElement.LayoutUpdated -= FrameworkElement_LayoutUpdated; } } } public static class FrameworkElementEventExtendHelper { public static FrameworkElementEventExtend EventExtend(this FrameworkElement frameworkElement) { FrameworkElementEventExtend eventExtend = new FrameworkElementEventExtend(frameworkElement); return eventExtend; } public static void AddShownEventHandler(this FrameworkElementEventExtend eventExtend, EventHandler eventHandler) { eventExtend.Shown += eventHandler; } }
댓글 없음:
댓글 쓰기