"SelectAllOnFocus"라는 첨부 된 속성이 있습니다. 참/거짓 값.TextBox AttachedProperty를 선택하여 모든 텍스트가 예상대로 작동하지 않습니까?
- PreviewMouseDown 이벤트가 트리거됩니다 : 어떻게됩니까
public static class TextBoxProps { private static void MyTextBoxKeyUp(object sender, KeyEventArgs e) { if (e.Key == Key.Escape) { ((TextBox)sender).Text = string.Empty; } } public static void SetSelectAllOnFocus(DependencyObject dependencyObject, bool selectAllOnFocus) { if (!ReferenceEquals(null, dependencyObject)) { dependencyObject.SetValue(SelectAllOnFocus, selectAllOnFocus); } } public static bool GetSelectAllOnFocus(DependencyObject dependencyObject) { if (!ReferenceEquals(null, dependencyObject)) { return (bool)dependencyObject.GetValue(SelectAllOnFocus); } else { return false; } } private static void OnSelectAllOnFocus(DependencyObject d, DependencyPropertyChangedEventArgs e) { bool selectAllOnFocus = (bool)e.NewValue == true; var theTextBox = d as TextBox; if (selectAllOnFocus && theTextBox != null) { theTextBox.PreviewMouseDown -= MyTextBoxMouseEnter; theTextBox.PreviewMouseDown += MyTextBoxMouseEnter; } } private static void MyTextBoxMouseEnter(object sender, MouseEventArgs e) { ((TextBox)sender).SelectAll(); e.Handled = false; } public static readonly DependencyProperty SelectAllOnFocus = DependencyProperty.RegisterAttached("SelectAllOnFocus", typeof(bool), typeof(TextBoxEscapeProperty), new FrameworkPropertyMetadata(false, new PropertyChangedCallback(OnSelectAllOnFocus))); }
는 다음과 같습니다.
- MyTextBoxMouseEnter 메서드가 호출됩니다.
- SelectAll() 메서드가 호출됩니다.
- ((TextBox) 보낸 사람) .SelectedText에서 "watch"를 수행하면 값이 정확합니다 (텍스트 상자에있는 내용이 selectedText로 표시됨).
- 텍스트 상자 자체는 변경되지 않습니다. 텍스트가 선택되지 않았습니다.
이것은 일반적인 WPF 스타일의 일부입니다. 응용 프로그램의 모든 텍스트 상자는이 속성과 관련 동작을 수신해야합니다.
내가 곤혹 스럽다. 어떤 아이디어?
감사
당신이 ((텍스트 상자) 보낸 사람) .UpdateLayout()를 호출하면 어떻게됩니까
에서
(당신은 당신의 "SelectAllOnFocus"속성을 확인하기 위해 그것을 수정해야합니다). PreviewMouseDown 대신 GotKeyboardFocus 이벤트를 처리합니다. 그것은 내가 볼 수있는 유일한 중요한 차이입니다. 그 이벤트를 사용해 보셨습니까? –
응답 주셔서 감사합니다 토마스 ... 난 그냥 PreviewMouseButtonDown 대신 PreviewMouseLeftButtonUp를 사용하도록 전환하고 작동합니다. 그게 왜 어떤 아이디어일까요? – tronious
토마스가이 질문에 대한 답변으로 게시하여 수표를 줄 수 있습니까? PreviewMouseDown이 작동하지 않는 이유는 정확히 모르겠지만 응답은 유효한 답변 – tronious