gpt4 book ai didi

silverlight - Silverlight 3 中的自动选项卡

转载 作者:行者123 更新时间:2023-12-05 00:43:14 26 4
gpt4 key购买 nike

我需要能够在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com