1
如果元素是DataTemplate的一部分,並且元素的Tab索引是唯一定義的,是否可以通過它的Tab索引獲取元素或設置它的焦點(例如TextBox)?WPF。如何通過它的選項卡索引設置元素的焦點?
如果元素是DataTemplate的一部分,並且元素的Tab索引是唯一定義的,是否可以通過它的Tab索引獲取元素或設置它的焦點(例如TextBox)?WPF。如何通過它的選項卡索引設置元素的焦點?
您可以通過VisualTreeHelper搜索通過模板創建的任何元素。
因此,您可以檢查任何現有元素的TabIndex,並會找到您想要的元素(它的tab-index非常獨特:)。您也可以在DataTemplate中命名您的元素併爲名稱命名爲過濾器。
以下函數允許您查找給定類型的可視化樹的所有元素。
void FindChildFrameworkElementsOfType<T>(DependencyObject parent,IList<T> list) where T: FrameworkElement{
DependencyObject child;
for(int i=0;i< VisualTreeHelper.GetChildrenCount(parent);i++){
child = VisualTreeHelper.GetChild(parent, i);
if (child is T) {
list.Add((T)child);
}
FindChildFrameworkElementsOfType<T>(child,list);
}
}
稱之爲如下:
List<TextBox> textBoxList=new List<TextBox>();
FindChildFrameworkElementsOfType<TextBox>(rootObject,textBoxList);
凡rootObject
是根對象,如你的窗口或底座控制。你會得到一個所有文本框的列表,這個列表可以檢查tab-index或者你想要檢查的任何屬性。
請注意,在調用此函數之前必須構建樹。在某些情況下,上述模式不起作用,例如,通過列表中的UI虛擬化。
是的!這就是我需要的!多麼寶貴的功能!謝謝! –