然而,由于SL自动确定标签序列,除了逆向工程/复制Silverlight的逻辑以确定可视树中的哪个控件应该是获得焦点的下一个控件之外,似乎没有办法做到这一点.
有没有人实现过这个?
解决方法 我正在寻找一个相当普遍的解决方案 – 但我已经能够做一些相当具体的事情 – 基本上它使用VisualTreeHelper来查找与我想要旁边的控件相同的父项的子项,并将焦点设置为那.这是一个比通过我的所有控件(这是一个相当大的LOB应用程序)更适合的解决方案,并为每个控件配置“下一步”控件.
这是我的代码,以防它帮助其他人. (VisualTreeeHelperUtil是我自己的一个类,它为VisualTreeHelper添加了一些实用工具)
public static voID TabNext(DependencyObject parentElement,Control fromControl){ var children = VisualTreeHelperUtil.FindChildren<Control>(parentElement). Where(c => c.IsEnabled && c.IsTabStop && c.Visibility == Visibility.Visible). ToList(); if (children.Contains(fromControl)) { var thisIndex = children.IndexOf(fromControl); var targetIndex = thisIndex + 1; if (children.Count > targetIndex) { var targetChild = children[targetIndex]; fromControl.dispatcher.BeginInvoke(() => { targetChild.Focus(); var txt = targetChild as TextBox; if (txt != null) { txt.SelectAll(); } }); } }}总结
以上是内存溢出为你收集整理的Silverlight 3中的自动选项卡全部内容,希望文章能够帮你解决Silverlight 3中的自动选项卡所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)