Silvelright:ListBox无法用Tab顺序切换内部元素焦点的解决

默认情况下,Silverlight自带的ListBox控件如果内部有多个TextBox,用户无法用键盘上的Tab键,在ListBox内部的TextBox之间切换。但Teterik RadControls 中的telerik:ListBox却很好的解决了这个问题,只要把telerik:ListBox的IsTabStop设置成false,同时把TabNavigation设置成Local即可(而SL自带的ListBox就算设置了这二个属性,Tab键需要按二次才能切换焦点)

完整Xaml代码:

<UserControl
		xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
		xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
		xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
		xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
		xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
		xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions" x:Class="List_Focus_Sample.MainPage"
		mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">
    <Grid x:Name="LayoutRoot">
        <Grid.RowDefinitions>
            <RowDefinition Height="35"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="35"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="35"/>
        </Grid.RowDefinitions>

        <TextBox Text="下面是Silverlight自带的ListBox" HorizontalAlignment="Center" VerticalAlignment="Center"/>

        <ListBox Grid.Row="1"  IsTabStop="False" ItemsSource="{Binding ListCode, Mode=TwoWay}" BorderThickness="0" HorizontalAlignment="Center" VerticalAlignment="Center">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <TextBox Text="{Binding Text, Mode=TwoWay}" Width="150" Margin="5" BorderThickness="3"/>
                </DataTemplate>
            </ListBox.ItemTemplate>
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Horizontal" Margin="10"/>
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>
            <ListBox.ItemContainerStyle>
                <Style TargetType="ListBoxItem">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="ListBoxItem">
                                <ContentPresenter Content="{TemplateBinding Content}"/>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </ListBox.ItemContainerStyle>
            <i:Interaction.Behaviors>
                <ei:MouseDragElementBehavior/>
            </i:Interaction.Behaviors>
        </ListBox>

        <TextBox Grid.Row="2" Text="下面是Telerik RadControls提供的ListBox" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="208,0,208,6"/>

        <telerik:ListBox  TabNavigation="Local" IsTabStop="False" Grid.Row="3" ItemsSource="{Binding ListCode, Mode=TwoWay}"  HorizontalAlignment="Center" VerticalAlignment="Center">
            <telerik:ListBox.ItemTemplate>
                <DataTemplate>
                    <TextBox Text="{Binding Text, Mode=TwoWay}" Width="150" Margin="5" BorderThickness="3"/>
                </DataTemplate>
            </telerik:ListBox.ItemTemplate>
            <telerik:ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Horizontal" Margin="10"/>
                </ItemsPanelTemplate>
            </telerik:ListBox.ItemsPanel>

        	<i:Interaction.Behaviors>
        		<ei:MouseDragElementBehavior/>
        	</i:Interaction.Behaviors>
        </telerik:ListBox>

        <TextBox Text="Telerik又一次展示了它给力的一面" Grid.Row="4" HorizontalAlignment="Center" VerticalAlignment="Center"/>
    </Grid>
</UserControl>

 意外惊喜:之前写过一篇博文,讲述了 Silverlight自带的ListBox,无法应用Blend中的MouseDragElementBehavior(即:应用该行为仍然无法拖动ListBox),但是telerik:ListBox发现居然可以(本例中,用鼠标按住telerik:ListBox中的任一文本框的边框,即可拖动整个ListBox)--商业控件就是给力!

时间: 2024-11-03 15:01:19

Silvelright:ListBox无法用Tab顺序切换内部元素焦点的解决的相关文章

Silverlight:用Enter键替换Tab键切换焦点

业务系统中,很多录入人员习惯于用Enter键来代替Tab键切换控件焦点(虽然我个人并不觉得这样录入速度会变得有多高效,呵呵),有需求了,自然就得想办法满足. 思路:为了更灵活的控件焦点顺序,我决定用TabIndex来做文章,每个输入控件按下回车时,找到下一个比当前控件TabIndex更大且最接近的控件,然后focus(). XAML界面部分: <UserControl x:Class="tab_key_test.MainPage" xmlns="http://schem

Qt之Tab键切换焦点顺序

简介 Qt的窗口部件按用户的习惯来处理键盘焦点.也就是说,其出发点是用户的焦点能定向到任何一个窗口,或者窗口中任何一个部件. 焦点获取方式比较多,例如:鼠标点击.Tab键切换.快捷键.鼠标滚轮等. 习惯性的,我们经常会使用Tab键来控制焦点顺序,比如:用户注册时,个人信息输入框焦点的切换.执行按钮焦点的切换等. 简介 效果 实现方式 源码 效果 实现方式 接口说明: static void QWidget::setTabOrder(QWidget * first, QWidget * secon

Jquery封装tab自动切换效果的具体实现

  今天我这边网速真是太慢了,打开一个网页要等待很久,但是还是想写篇文章----tab自动切换 因为工作中经常会碰到这样的问题 所以写博客也是总结下 最重要的是能分享下 及以后碰到类似的可以参考下! 当然这是我用Jquery来封装的 页面可以调用多次 调用方式                new tabSlider(obj,count); obj指容器最外层ID,count指有多个li 当然要引用我这个js的话 一定要按照我结构来写!下面的是我的HTML一些结构如下: 复制代码 代码如下: <

原生javascript实现Tab选项卡切换功能

 本文主要介绍了使用原生javascript实现Tab选项卡切换的功能,虽然jQuery有很多类似的插件,单jQuery库着实有点庞大,这种小功能还是直接用javascript来做就好了.     分析个人用原生JS获取类名元素的代码:   代码如下: getByClassName:function(className,parent){ var elem = [], node = parent != undefined&&parent.nodeType==1?parent.getEleme

js+css实现tab菜单切换效果的方法

 这篇文章主要介绍了js+css实现tab菜单切换效果的方法,以实例形式完整讲述了css与js的实现代码,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了js+css实现tab菜单切换效果的方法.分享给大家供大家参考.具体实现方法如下: index.css如下:   代码如下: * { margin: 0px; padding: 0px; } body { width: 600px; margin: 0 auto; background-color: silver; } #co

ie滚动条-ie浏览器tab页切换时滚动条位置

问题描述 ie浏览器tab页切换时滚动条位置 ie浏览器里 tab页切换时垂直滚动条会回到最顶上的位置,怎么破,其他浏览器的滚动条都会在当前位置,菜菜菜鸟,求指点 解决方案 你的ie浏览器有问题吧,我这里就没有你这种问题,重新安装试试

前端的小玩意(9.1)——做一个仿360工具箱的web页面(Tab按钮切换)

需求: ①写一个web版的360工具箱,示意图如下:   ②无左上返回按钮,右上按钮有皮肤切换,下拉框(但无点击逻辑):   ③按钮点击有事件,但事件是console.log(按钮名):   ④可以在全部工具和我等工具自由切换:   ⑤可以点击左下角的编辑,然后根据实际表现设置:   ⑥可以在全部工具里面,点击按钮,然后添加到我的工具这边来:   ⑦效果尽量与原图相同,只使用jquery库:   效果网址: http://jianwangsan.cn/toolbox         (一)tab

jQuery实现带幻灯的tab滑动切换风格菜单代码_jquery

本文实例讲述了jQuery实现带幻灯的tab滑动切换风格菜单代码.分享给大家供大家参考.具体如下: 这是一款很不错的TAB滑动切换效果,jQuery带幻灯的tab滑动切换风格菜单导航条,点击上方的文字,下边就向左或向右滑动切换,动画效果的TAB选项卡. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery-flash-style-tab-cha-menu-codes/ 具体代码如下: <!DOCTYPE html> <head&g

v4包-tab标签切换时Fragment相关问题

问题描述 tab标签切换时Fragment相关问题 各位请看,我在第一张图片里写到了(<===看这里,看这里的那行)创建了一个方法,参数如图,之后新建方法如图2所示,在这个方法中我将参数FragmentTransaction改为了V4下的,但是在if语句中,hide却还是FragmentTransaction,程序一直报错. 解决方案 你看看你的Fragment是android.support.v4.app里的还是android.app里的 解决方案二: 第二张图在哪?应该是两个fragment