簡體   English   中英

如何將標簽索引設置為xaml樹視圖項?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM