0
在XAML中,我創建了CustomWindow
。它包含許多嵌套元素。是否存在簡單的方法來獲取所有命名元素(我通過x:Name="SomeName"
設置名稱),標記爲公開(我設置修改器通過x:FieldModifier="public"
)?WPF:獲取窗口中的所有命名元素
在XAML中,我創建了CustomWindow
。它包含許多嵌套元素。是否存在簡單的方法來獲取所有命名元素(我通過x:Name="SomeName"
設置名稱),標記爲公開(我設置修改器通過x:FieldModifier="public"
)?WPF:獲取窗口中的所有命名元素
我知道沒有開箱即用的方式。您可以使用VisualTreeHelper
瀏覽的VisualTree,並檢查他們是否有你的interrested屬性
這是可以做到的方法,你需要什麼:
public static IEnumerable<FrameworkElement> FindVisualChildren(FrameworkElement obj, Func<FrameworkElement, bool> predicate)
{
if (obj != null)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
var objChild = VisualTreeHelper.GetChild(obj, i);
if (objChild != null && predicate(objChild as FrameworkElement))
{
yield return objChild as FrameworkElement;
}
foreach (FrameworkElement childOfChild in FindVisualChildren(objChild as FrameworkElement, predicate))
{
yield return childOfChild;
}
}
}
}
用法可能是類似的東西了僅對名稱進行檢查:
var children = FindVisualChildren((FrameworkElement)sender, o => !string.IsNullOrEmpty(o.Name));