我的控件由嵌套列表框和树视图构成。 每个列表框/树视图项目还包含丰富的文本框和其他控件。WPF:复杂标签聚焦行为
我要定义一个“标签”焦点行为,使得当用户点击“选项卡”的下一个可选择的项目(根据我定义一个顺序)将成为聚焦的。
目前,我接受(它只能部分地)这是行不通的。
我的问题是不特定于我的情况 - 而如何在所有定义这种行为。 作为一个极端的例子,让我们说我想完全控制这一点,并使物体之间的物理距离不近。
任何人都可能知道这可怎么控制?
我的控件由嵌套列表框和树视图构成。 每个列表框/树视图项目还包含丰富的文本框和其他控件。WPF:复杂标签聚焦行为
我要定义一个“标签”焦点行为,使得当用户点击“选项卡”的下一个可选择的项目(根据我定义一个顺序)将成为聚焦的。
目前,我接受(它只能部分地)这是行不通的。
我的问题是不特定于我的情况 - 而如何在所有定义这种行为。 作为一个极端的例子,让我们说我想完全控制这一点,并使物体之间的物理距离不近。
任何人都可能知道这可怎么控制?
您正在寻找的KeyboardNavigation.TabIndex财产?
乔,这种机制比我想象的,请在此筑巢更聪明 - 它完美的作品:
<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>
你好,Joe,你的快速重播感谢名单。这可能是可能的解决方案。问题是我的文档非常复杂,用户可以上下移动项目 - 我将不得不管理这些索引。你知道这将如何表现在嵌套列表框?例如,外部项目将从0-N索引,内部项目也将从0-M索引,如果是这种情况 - 您的建议将适用于我。 – Gilad 2010-09-27 11:56:50
我从来没有在另一个内嵌套一个列表框,所以我不确定。如果您尝试使用Tab在同一列表框中的列表项目之间移动,则可能需要使用ListBox上的KeyboardNavigation.TabNavigation进行操作。它看起来像默认的选项卡顺序在同一个列表项中的控件之间,然后到下一个列表项。如果您需要不同的东西,请查看KeyboardNavigation上的其他属性。如果您仍然陷入困境,我认为您必须发布更具体的问题。 – 2010-09-27 12:05:10