从ViewModel设置焦点不适用于datagrid项目 [英] Setting focus from ViewModel does not work for the datagrid items

查看:75
本文介绍了从ViewModel设置焦点不适用于datagrid项目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在关注乔什·史密斯(Josh Smith)关于从ViewModel设置焦点的文章( http://joshsmithonwpf.wordpress.com/2010/03/16/control-input-focus-from-viewmodel-objects/) 并毫不费力地使用他的库,直到我将其用于datagrid项目为止.下面是无效代码的简化版本.

I was following Josh Smith's article on setting focus from the ViewModel (http://joshsmithonwpf.wordpress.com/2010/03/16/control-input-focus-from-viewmodel-objects/) and using his library without trouble until I used the same for datagrid items. A simplified version of the non working code is below.

PS:我也在我的项目中使用Caliburn Micro.

PS: I am using Caliburn Micro for my project as well.

public class MainViewModel

{
	public class SubViewModel : IFocusMover, IDataErrorInfo
	{
		public string RequiredField { get; set; }

            	public event EventHandler<MoveFocusEventArgs> MoveFocus;
 		public void InvokeMoveFocus(string propertyToBeFocussed)
 		{
 			var handler = MoveFocus;
 			if (handler != null)
 			{
				handler(this, new MoveFocusEventArgs(propertyToBeFocussed));
 			}
 		}

 		public string Error { get; set; }
 		public string this[string propertyName]
 		{
 			get
 			{ 
 				InvokeMoveFocus(propertyName);
 				return Error;
 			}
 		}
	}

        public ObservableCollection<SubViewModel > SubItems { get; set; }
}

推荐答案

该方法不适用于SubItem,您必须检查验证并动态设置TextBox.Focus().
This method can not work on SubItem, you have to check the validation and set TextBox.Focus() dynamicly.


这篇关于从ViewModel设置焦点不适用于datagrid项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆