2010-09-27 62 views
1

我的控件由嵌套列表框和树视图构成。 每个列表框/树视图项目还包含丰富的文本框和其他控件。WPF:复杂标签聚焦行为

我要定义一个“标签”焦点行为,使得当用户点击“选项卡”的下一个可选择的项目(根据我定义一个顺序)将成为聚焦的。

目前,我接受(它只能部分地)这是行不通的。

我的问题是不特定于我的情况 - 而如何在所有定义这种行为。 作为一个极端的例子,让我们说我想完全控制这一点,并使物体之间的物理距离不近。

任何人都可能知道这可怎么控制?

回答

1

您正在寻找的KeyboardNavigation.TabIndex财产?

+0

你好,Joe,你的快速重播感谢名单。这可能是可能的解决方案。问题是我的文档非常复杂,用户可以上下移动项目 - 我将不得不管理这些索引。你知道这将如何表现在嵌套列表框?例如,外部项目将从0-N索引,内部项目也将从0-M索引,如果是这种情况 - 您的建议将适用于我。 – Gilad 2010-09-27 11:56:50

+0

我从来没有在另一个内嵌套一个列表框,所以我不确定。如果您尝试使用Tab在同一列表框中的列表项目之间移动,则可能需要使用ListBox上的KeyboardNavigation.TabNavigation进行操作。它看起来像默认的选项卡顺序在同一个列表项中的控件之间,然后到下一个列表项。如果您需要不同的东西,请查看KeyboardNavigation上的其他属性。如果您仍然陷入困境,我认为您必须发布更具体的问题。 – 2010-09-27 12:05:10

3

乔,这种机制比我想象的,请在此筑巢更聪明 - 它完美的作品:

<ListBox KeyboardNavigation.TabNavigation="Continue"> 
    <ListBoxItem Focusable="False"> 
     <ListBox KeyboardNavigation.TabNavigation="Continue"> 
      <ListBox.Items> 
       <ListBoxItem Focusable="False"> 
        <TextBox Width="300" KeyboardNavigation.TabIndex="1" Focusable="True"/> 
       </ListBoxItem> 
       <ListBoxItem Focusable="False"> 
        <TextBox Width="300" KeyboardNavigation.TabIndex="2" Focusable="True"/> 
       </ListBoxItem> 
       <ListBoxItem Focusable="False"> 
        <TextBox Width="300" KeyboardNavigation.TabIndex="3" Focusable="True"/> 
       </ListBoxItem> 
      </ListBox.Items> 
     </ListBox> 
    </ListBoxItem> 
    <ListBoxItem Focusable="False"> 
     <ListBox KeyboardNavigation.TabNavigation="Continue"> 
      <ListBox.Items> 
       <ListBoxItem Focusable="False"> 
        <TextBox Width="300" KeyboardNavigation.TabIndex="1" Focusable="True"/> 
       </ListBoxItem> 
       <ListBoxItem Focusable="False"> 
        <StackPanel> 
         <TextBox Width="300" KeyboardNavigation.TabIndex="3" Focusable="True"/> 
         <Border BorderBrush="Red"> 
          <ListBox KeyboardNavigation.TabNavigation="Continue"> 
           <ListBoxItem Focusable="False"> 
            <ListBox KeyboardNavigation.TabNavigation="Continue"> 
             <ListBox.Items> 
              <ListBoxItem Focusable="False"> 
               <TextBox Width="300" KeyboardNavigation.TabIndex="1" Focusable="True"/> 
              </ListBoxItem> 
              <ListBoxItem Focusable="False"> 
               <TextBox Width="300" KeyboardNavigation.TabIndex="2" Focusable="True"/> 
              </ListBoxItem> 
              <ListBoxItem Focusable="False"> 
               <TextBox Width="300" KeyboardNavigation.TabIndex="3" Focusable="True"/> 
              </ListBoxItem> 
             </ListBox.Items> 
            </ListBox> 
           </ListBoxItem> 
           <ListBoxItem Focusable="False"> 
            <ListBox KeyboardNavigation.TabNavigation="Continue"> 
             <ListBox.Items> 
              <ListBoxItem Focusable="False"> 
               <TextBox Width="300" KeyboardNavigation.TabIndex="1" Focusable="True"/> 
              </ListBoxItem> 
              <ListBoxItem Focusable="False"> 
               <TextBox Width="300" KeyboardNavigation.TabIndex="2" Focusable="True"/> 
              </ListBoxItem> 
              <ListBoxItem Focusable="False"> 
               <TextBox Width="300" KeyboardNavigation.TabIndex="3" Focusable="True"/> 
              </ListBoxItem> 
             </ListBox.Items> 
            </ListBox> 
           </ListBoxItem> 
          </ListBox> 
         </Border> 
        </StackPanel> 
       </ListBoxItem> 
       <ListBoxItem Focusable="False"> 
        <StackPanel> 
         <TextBox Width="300" KeyboardNavigation.TabIndex="3" Focusable="True"/> 
         <Border BorderBrush="Red"> 
          <ListBox KeyboardNavigation.TabNavigation="Continue"> 
           <ListBoxItem Focusable="False"> 
            <ListBox KeyboardNavigation.TabNavigation="Continue"> 
             <ListBox.Items> 
              <ListBoxItem Focusable="False"> 
               <TextBox Width="300" KeyboardNavigation.TabIndex="1" Focusable="True"/> 
              </ListBoxItem> 
              <ListBoxItem Focusable="False"> 
               <TextBox Width="300" KeyboardNavigation.TabIndex="2" Focusable="True"/> 
              </ListBoxItem> 
              <ListBoxItem Focusable="False"> 
               <TextBox Width="300" KeyboardNavigation.TabIndex="3" Focusable="True"/> 
              </ListBoxItem> 
             </ListBox.Items> 
            </ListBox> 
           </ListBoxItem> 
           <ListBoxItem Focusable="False"> 
            <ListBox KeyboardNavigation.TabNavigation="Continue"> 
             <ListBox.Items> 
              <ListBoxItem Focusable="False"> 
               <TextBox Width="300" KeyboardNavigation.TabIndex="1" Focusable="True"/> 
              </ListBoxItem> 
              <ListBoxItem Focusable="False"> 
               <TextBox Width="300" KeyboardNavigation.TabIndex="2" Focusable="True"/> 
              </ListBoxItem> 
              <ListBoxItem Focusable="False"> 
               <TextBox Width="300" KeyboardNavigation.TabIndex="3" Focusable="True"/> 
              </ListBoxItem> 
             </ListBox.Items> 
            </ListBox> 
           </ListBoxItem> 
          </ListBox> 
         </Border> 
        </StackPanel> 
       </ListBoxItem> 
      </ListBox.Items> 
     </ListBox> 
    </ListBoxItem> 
</ListBox>