我需要一種方式列出wpf應用程序中的所有命名控件。Wpf:列出應用程序中的所有控件名稱
在C++中,我們可以使用資源文件來查看窗體上所有控件的列表(或者我被告知)。我需要類似的方式來查看wpf應用程序中的控件列表。這些名字將被用於數據庫中,所以我如何獲取它們並不重要,我只需要自動化它,這樣我就不會錯過或拼錯任何東西。
有沒有人有關於如何做到這一點的任何想法?可能在那裏有一個工具可以讀取xaml文件並挑選名稱?
我需要一種方式列出wpf應用程序中的所有命名控件。Wpf:列出應用程序中的所有控件名稱
在C++中,我們可以使用資源文件來查看窗體上所有控件的列表(或者我被告知)。我需要類似的方式來查看wpf應用程序中的控件列表。這些名字將被用於數據庫中,所以我如何獲取它們並不重要,我只需要自動化它,這樣我就不會錯過或拼錯任何東西。
有沒有人有關於如何做到這一點的任何想法?可能在那裏有一個工具可以讀取xaml文件並挑選名稱?
有人給我發這個早些時候:
可以使用LogicalTreeHelper(或VisualTreeHelper)通過WPF樹遞歸,找到你感興趣的控制
我不知道,如果你是。使用Windows或ASP.net項目,但這是爲wpf表單項目。
xaml文件是一種xml格式。您可以使用任何xml解析器來解析xaml文件。您可能會注意到,並非xaml文件中的所有部件都是控件(元素),並且控件不必具有指定的名稱即可工作。
如果你想運行它,你可以按照已經建議的使用LogicalTreeHelper或VisualTreeHelper。
這將幫助你:
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事件優選。
這是一個很好的答案,正是我所期待的。謝謝。 – MikeMalter 2011-08-02 02:53:11