将焦点设置为WPF中usercontrol内的控件,但未在IDE中显示该视图

时间:2015-10-16 04:48:14

标签: wpf mvvm setfocus

当我在构造函数中添加this.IsVisibleChanged时它没有显示视图。所以基本上我在xaml视图中尝试使用focus方法,但它不能很好地工作。所以我添加了这个并且运行良好。只有问题是设计视图没有显示。它通过例外。



//Constructor
public LoginControl()
{
	InitializeComponent();
	this.IsVisibleChanged += new DependencyPropertyChangedEventHandler(LoginControl_IsVisibleChanged); 
}

void LoginControl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
	if ((bool)e.NewValue == true)
	{
		Dispatcher.BeginInvoke(
		DispatcherPriority.ContextIdle,
		new Action(delegate()
		{
			txtPassword.Focus();
		}));
	} 
}  




1 个答案:

答案 0 :(得分:0)

找到答案

删除行

this.IsVisibleChanged += new DependencyPropertyChangedEventHandler
          (LoginControl_IsVisibleChanged); 
在LoginControl的开始标记中启用IsVisibleChanged属性并绑定LoginControl_IsVisibleChanged方法。

将方法LoginControl_IsVisibleChanged的内容粘贴到

void LoginControl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
  if (!System.ComponentModel.DesignerProperties.GetIsInDesignMode(this)) 
  {
	  if ((bool)e.NewValue == true)
	  {
		Dispatcher.BeginInvoke(
		DispatcherPriority.ContextIdle,
		new Action(delegate()
		{
			txtPassword.Focus();
		}));
	  } 
    }
}