【问题标题】:/Tab index not working between User Control and a normal control/Tab 索引在用户控件和普通控件之间不起作用
【发布时间】:2015-01-20 07:35:29
【问题描述】:

嗨,我在页面中有一个 wpf 用户控件和 wpf 文本框控件,当我按下键盘上的 Tab 时,它不会转到下一个控件,这是一个普通的文本框。我已将属性 Tabstop 设置为 true,但没有任何效果...

我没有在用户控件中为标签索引创建任何特殊属性。

<StackPanel Orientation="Vertical">
  //(User Control)
  <controls:UserControl x:Name="txt_Name" Header="Name"/>  

   (Normal TextBox Control)
  <StackPanel Orientation="Vertical" Margin="10">
      <Label Content="Size" VerticalAlignment="Top" />  
      //(Normal TextBox Control)                       
      <TextBox Name="txt_sizeofFacility"/>
  </StackPanel>


  <StackPanel Orientation="Vertical" Margin="10">
     <Label Content="Age" VerticalAlignment="Top" />
     //(Normal TextBox Control)
     <TextBox Name="txt_ageofFacility"/>
  </StackPanel>

    //(User Control)
  <controls:UserControl x:Name="txt_primaryActivity"  Header="Primary Activity"/>
</StackPanel>

【问题讨论】:

  • 我已经复制了你的代码,但我无法重现它...按 Tab 就可以了。你能说得更具体点吗?
  • 尝试手动关注txt_sizeofFacility 并按 Tab 发生了什么?

标签: c# wpf


【解决方案1】:

这是我的代码:

<StackPanel Orientation="Vertical">
    <!--//(User Control)-->
    <controls:UserControl1 x:Name="txt_Name" />

    <!--(Normal TextBox Control)-->
    <StackPanel Orientation="Vertical" Margin="10">
        <Label Content="Size" VerticalAlignment="Top" />
        <!--//(Normal TextBox Control)-->
        <TextBox Name="txt_sizeofFacility"/>
    </StackPanel>


    <StackPanel Orientation="Vertical" Margin="10">
        <Label Content="Age" VerticalAlignment="Top" />
        <!--//(Normal TextBox Control)-->
        <TextBox Name="txt_ageofFacility"/>
    </StackPanel>

    <!--//(User Control)-->
    <controls:UserControl1 x:Name="txt_primaryActivity"  />
</StackPanel>

这是用户控件:

<UserControl x:Class="TabIndex.UserControl1"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300">
<Grid>
        <TextBox x:Name="test"></TextBox>
</Grid>

我可以复制。即使在每个文本框中手动设置焦点后,选项卡也能正常工作

【讨论】:

  • 无论是在设计还是代码背后,我可以在哪里设置焦点?
  • 我不明白。您不想通过单击来设置项目的焦点吗?
  • 其实我不想点击,如果我只是按 Tab 键,无论是用户控件还是普通控件,光标都应该移动到下一个控件。
  • 我认为你的问题是你没有设置最初的焦点项目。尝试将项目设置为专注于负载。
  • 例如输入txt_sizeofFacility.Focus();在你 Window.loaded 事件中
【解决方案2】:

我遇到了同样的问题,发现您可以在用户控件上设置下面的属性,这对我有用。

KeyboardNavigation.TabNavigation="Local" 

【讨论】:

    猜你喜欢
    • 2011-02-24
    • 2017-01-16
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    相关资源
    最近更新 更多