Dreamine.MVVM.Behaviors 1.0.4
Dreamine.MVVM.Behaviors 산업 자동화 및 I/O 기능을 제공합니다.
로딩중...
검색중...
일치하는것 없음
FocusOnLoadedBehavior.cs
이 파일의 문서화 페이지로 가기
1using System.Windows;
2using System.Windows.Controls;
3using System.Windows.Input;
4using Dreamine.MVVM.Behaviors.Core.Base;
5
7{
16 public class FocusOnLoadedBehavior : Behavior<FrameworkElement>
17 {
26 public static readonly DependencyProperty IsEnabledProperty =
27 DependencyProperty.RegisterAttached(
28 "IsEnabled",
29 typeof(bool),
31 new PropertyMetadata(false, OnIsEnabledChanged));
32
57 public static bool GetIsEnabled(DependencyObject obj)
58 {
59 return (bool)obj.GetValue(IsEnabledProperty);
60 }
61
86 public static void SetIsEnabled(DependencyObject obj, bool value)
87 {
88 obj.SetValue(IsEnabledProperty, value);
89 }
90
115 private static void OnIsEnabledChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
116 {
117 if (d is FrameworkElement element && (bool)e.NewValue)
118 {
119 // Loaded 이벤트가 중복 연결되지 않도록 방지
120 element.Loaded -= OnElementLoaded;
121 element.Loaded += OnElementLoaded;
122 }
123 }
124
149 private static void OnElementLoaded(object sender, RoutedEventArgs e)
150 {
151 if (sender is FrameworkElement element)
152 {
153 element.Loaded -= OnElementLoaded;
154
155 // 포커스를 이동할 수 있는 경우에만 처리
156 if (element.Focusable && element.IsEnabled && element.Visibility == Visibility.Visible)
157 {
158 element.Focus();
159 Keyboard.Focus(element);
160 }
161 }
162 }
163
164 }
165}
static void OnElementLoaded(object sender, RoutedEventArgs e)
static void SetIsEnabled(DependencyObject obj, bool value)
static void OnIsEnabledChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)