WPF - Remove focus when clicking outside of a textbox

前端 未结 13 2188
粉色の甜心
粉色の甜心 2020-12-02 19:11

I have some textboxes where I would like focus to behave a little differently than normal for a WPF application. Basically, I would like them to behave more like a textbox b

13条回答
  •  囚心锁ツ
    2020-12-02 19:25

    public class ClearFocusOnOutsideClickBehavior : Behavior
    {
        protected override void OnAttached()
        {
    
            AssociatedObject.GotFocus += AssociatedObjectOnGotFocus;
            AssociatedObject.LostFocus += AssociatedObjectOnLostFocus;
            base.OnAttached();
        }
    
        private void AssociatedObjectOnLostFocus(object sender, RoutedEventArgs e)
        {
            App.Current.MainWindow.MouseUp -= _paren_PreviewMouseUp;
        }
    
        private void AssociatedObjectOnGotFocus(object sender, RoutedEventArgs e)
        {
            App.Current.MainWindow.MouseUp += _paren_PreviewMouseUp;
        }
    
        private void _paren_PreviewMouseUp(object sender, MouseButtonEventArgs e)
        {
            Keyboard.ClearFocus();
        }
    
        protected override void OnDetaching()
        {
            AssociatedObject.GotFocus -= AssociatedObjectOnGotFocus;
            AssociatedObject.LostFocus -= AssociatedObjectOnLostFocus;
        }
    }
    

    Using in XAML:

    
                
                    
                
     
    

提交回复
热议问题