2016-06-20 72 views
0

我在我的應用程序中添加了一個驗證模塊,它將引導用戶輸入需要注意的內容。我想按照與添加到Visual Tree中相同的順序來瀏覽這些控件。每個控件的Tab索引設置爲Int Max,這意味着按照Visual Tree的順序。如何獲取WPF中的默認Tab鍵順序(即Visual Tree順序)?

我的驗證模塊只是得到一堆控件來驗證。它需要從上到下對它們進行排序,以便用戶可以順序通過表單。我想保留原始Tab鍵行爲。 我只需要知道列表中控件的視覺樹順序,這樣我就可以正確地對它們進行排序。

+0

你試過調用所有的控件,然後得到他們當前的tabindex?如果是這樣,你還試過了什麼? –

+0

除非明確設置,否則當前選項卡索引設置爲Int Max,這只是表示按可視化樹的順序排列。是的,我已經試過了。 – NielW

回答

0

經過幾天的研究,我意識到這不是開箱即用的。最後,我只需調用FindVisualChildren即可獲得所有FrameworkElement,並且如果控件實現了我的IValidatable接口,則我將它分配給計數器的下一個可用索引。我不得不添加一個名爲Order的依賴項屬性,以使其工作(我不想用現有的TabIndex)。然後,當我得到需要驗證的控件列表時,我只按順序對它們進行了排序。

這絕對不是一個可擴展的解決方案,但幸運的是我只需要運行一次。

如果有人有更好的解決方案,請發佈它。我覺得很骯髒。