wpf使某个控件失去焦点_WPF的TextBox的焦点获取与失去焦点的死循环解决方案

在WPF中实现一个弹出层自动获取焦点,弹出层实现是通过其UserControl的依赖属性Visibility的绑定实现的,让UserControl上的TextBox获取焦点,初始实现代码如下:

public Visibility IsVisibile

{

get { return (Visibility)GetValue(IsVisibileProperty); }

set { SetValue(IsVisibileProperty, value); }

}

public static readonly DependencyProperty IsVisibileProperty =

DependencyProperty.Register("IsVisibile", typeof(Visibility), typeof(WordsKeyboard), new PropertyMetadata(Visibility.Collapsed,new PropertyChangedCallback((d,e)=>

{

if((Visibility)e.NewValue==Visibility.Visibile)

(d as MainUserControl).textBox.Focus();

})));

但是第一次弹出该层的时候焦点未在textBox上,除了第一次弹出未获取到焦点后面的弹出都获取到了,为了解决第一次弹出层的TextBox未获取到焦点采用了定时器延时的方法,解决方案如下:

///

/// 定义个定时器

///

DispatcherTimer timer = new DispatcherTimer();

你可能感兴趣的:(wpf使某个控件失去焦点)