首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不禁用控件的所有焦点的情况下控制跳转顺序

如何在不禁用控件的所有焦点的情况下控制跳转顺序
EN

Stack Overflow用户
提问于 2011-09-21 20:11:39
回答 1查看 394关注 0票数 0

我有一个像这样的控件,它有几个文本框

代码语言:javascript
复制
[1 ][2 ][3 ][4 ]

现在,在我的应用程序中,这些控件正在形成某种矩阵,例如

代码语言:javascript
复制
[1 ][2 ][3 ][4 ]
[1 ][2 ][3 ][4 ]
[1 ][2 ][3 ][4 ]

现在我想设置1,3和4的IsTabStop = false,这样用户只能在第二个文本框中使用tab键。在我做完这些之后,我发现13-4现在不能集中注意力了。令我惊讶的是,在WPF中,这不是真的,所以它只是Silverlight的另一个意想不到的限制!

http://msdn.microsoft.com/ru-ru/library/system.windows.controls.control.istabstop(v=vs.95).aspx

如何通过[2 ]计划进行初始Tab键操作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-22 08:20:06

我相信你可以扩展TextBox控件,让它成为可聚焦的。参见this post

附加属性

代码语言:javascript
复制
public class Ex
{
    public static bool GetIsTabStop(DependencyObject obj)
    {
        return (bool)obj.GetValue(IsTabStopProperty);
    }

    public static void SetIsTabStop(DependencyObject obj, bool value)
    {
        obj.SetValue(IsTabStopProperty, value);
    }

    // Using a DependencyProperty as the backing store for IsTabStop.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty IsTabStopProperty =
        DependencyProperty.RegisterAttached("IsTabStop", typeof(bool), typeof(Ex), new PropertyMetadata(true, Callback));

    private static void Callback(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        var control = d as Control;
        if (control != null)
        {
            control.IsTabStop = (bool)e.NewValue;

            control.MouseLeftButtonDown += (sender, args) =>
            {
                if (!control.IsTabStop)
                {
                    control.IsTabStop = true;
                    control.Focus();
                    control.IsTabStop = false;
                } 
            };
        }
    }
}

XAML

代码语言:javascript
复制
    <TextBox HorizontalAlignment="Left" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Margin="215,49,0,0" RenderTransformOrigin="0,7.25"/>
    <TextBox HorizontalAlignment="Left" local:Ex.IsTabStop="False" TextWrapping="Wrap" Text="TextBox" Margin="215,96,0,0" VerticalAlignment="Top"/>
    <RadioButton Content="RadioButton" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="210,144,0,0"/>
    <RadioButton Content="RadioButton" local:Ex.IsTabStop="False" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="213,183,0,0"/>

你基本上可以把它附加到从Control继承的任何东西上。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7499526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档