[英]how to set tab index to xaml tree view items?
我有一个树视图,其中我使用c#代码动态地将复选框设置为树视图项。 现在,我想在按Tab键按钮时遍历所有树视图项。 目前,当我按下选项卡按钮时,我的树视图项目会聚焦,但是要为我的任何树视图项目编制索引。 xaml代码
<TreeView x:Name="resultTree" Grid.Column="2" Height="280"
Margin="0,60,89,0" VerticalAlignment="Top" Grid.ColumnSpan="3"
HorizontalAlignment="Right" Width="345" Grid.RowSpan="2" TabIndex="3" />
C#代码:
TreeViewItem accountTree = new TreeViewItem();
accountTree.Focus();
accountTree.IsExpanded = true;
j = 4;
CheckBox currentAccountChBx = new System.Windows.Controls.CheckBox();
currentAccountChBx.Content = "A";
currentAccountChBx.Name = "accountChBx" + i;
currentAccountChBx.TabIndex = j;
currentAccountChBx.Focusable = true;
currentAccountChBx.IsTabStop = false;
j++;
您应该使用递归:对于每个节点,迭代其子节点。 例如,在消息框中显示每个节点内容:
void ExecuteOnEachNode(TreeView tree, Action<TreeViewItem> func) // Executes 'func' on each item with it as parameter
{
foreach (TreeViewItem item in tree.Items)
{
func(item);
foreach (TreeViewItem subitem in item.Items)
{
ExecuteOnEachNode(item, func); // Trasvel over current item children
}
}
}
ExecuteOnEachNode(item => MessageBox.Show(item.Header.ToString()));
然后,您应该为每个人设置标签indx。 例如,
int counter = 2;
ExecuteOnEachNode(item => item.TabIndex = counter++);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.