Get和Setfocus元素

时间:2011-09-27 17:43:24

标签: c# wpf focus

我要做的是在对BO进行刷新之前获取最后一个焦点元素并将其设置回最后一个焦点值。

这个想法如下:

//get last focus element
var x = Keyboard.FocusedElement;
//refresh my businessobject here
CallMethod();
//set the focus to my last element
FocusManager.SetFocusedElement(focusScope, x);

...但是这里的问题是在调用刷新对象方法后,我的“x”值在此过程中被更改了。

有人遇到过这个问题吗?

2 个答案:

答案 0 :(得分:0)

您不能只指定Keyboard.FocusedElement,因为Keyboard.FocusedElement是参考类型。因此,只要框架更改Keyboard.FocusedElement,您的副本就会更改。您需要找到一种新方法来识别在调用之前具有焦点的控件,或者尝试找到有效的深层复制解决方案。

答案 1 :(得分:0)

为什么不使用Focus()方法??

//get focused element
UIElement x = Keyboard.FocusedElement as UIElement;

//refresh my businessobject here
CallMethod();

//set the focus to my last element
x.Focus();

或考虑使用FocusManager.GetFocusedElement(focusScope) ...