silverlight - Silverlight 3 中的自动选项卡

标签 silverlight

我需要能够在 SL3 应用程序中从一个控件自动切换到“下一个控件”。例如,一个 TextBox 被限制为 3 个字符——在输入第三个字符时,焦点应该自动移动到表单上的下一个控件(我的实际用法略有不同,但这个例子就足够了)。

但是,由于 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 - Silverlight 3 中的自动选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1354903/

相关文章:

c# - 在 C# Com 包装器中使用 native dll 并在 silverlight 中使用 dll

Silverlight 4 - 安装是否需要管理员权限?

silverlight - 我的 ViewModel 中可以有 ValueConverter 吗?

silverlight - 使用 MEF Prism 和 Silverlight 按需加载模块

Silverlight 列表框项目模板 : Make certain elements visible when item is selected

c# - Silverlight 中的 MediaElement 抛出 System.Exception 6028

silverlight - 如何在 wp7 应用程序中更改 xaml 页面的背景颜色?

c# - GoToPlaylistItem 和 GoToPlaylistItemOnNextTick 有什么区别

wpf - 开发WPF或Silverlight应用程序的工具

c# - Visual Studio 2008 中缺少 Siverlight 模板