2009-09-25 84 views
0

我需要一種方式列出wpf應用程序中的所有命名控件。Wpf:列出應用程序中的所有控件名稱

在C++中,我們可以使用資源文件來查看窗體上所有控件的列表(或者我被告知)。我需要類似的方式來查看wpf應用程序中的控件列表。這些名字將被用於數據庫中,所以我如何獲取它們並不重要,我只需要自動化它,這樣我就不會錯過或拼錯任何東西。

有沒有人有關於如何做到這一點的任何想法?可能在那裏有一個工具可以讀取xaml文件並挑選名稱?

回答

0

有人給我發這個早些時候:

可以使用LogicalTreeHelper(或VisualTreeHelper)通過WPF樹遞歸,找到你感興趣的控制

我不知道,如果你是。使用Windows或ASP.net項目,但這是爲wpf表單項目。

1

xaml文件是一種xml格式。您可以使用任何xml解析器來解析xaml文件。您可能會注意到,並非xaml文件中的所有部件都是控件(元素),並且控件不必具有指定的名稱即可工作。

如果你想運行它,你可以按照已經建議的使用LogicalTreeHelperVisualTreeHelper

3

這將幫助你:

private void ProcessLogicalTree(object current) 
{ 
    string elementInfo = current.GetType().Name; 

    if (current is FrameworkElement) 
    { 
     elementInfo += " - Name: " + (current as FrameworkElement).Name; 
    } 

    MessageBox.Show(elementInfo); 

    DependencyObject dependencyObject = current as DependencyObject; 

    if (dependencyObject != null) 
    { 
     foreach (object child in LogicalTreeHelper.GetChildren(dependencyObject)) 
     { 
      ProcessLogicalTree(child); 
     } 
    } 
} 

這是你如何使用它:

ProcessLogicalTree(this); // Where 'this' is your Window or your UserControl 

在Loaded事件或在Button_Click事件優選。

+0

這是一個很好的答案,正是我所期待的。謝謝。 – MikeMalter 2011-08-02 02:53:11

相關問題