循環我有一個StackPanel
是充滿控制,我通過元素試圖循環,並得到他們的名字,但似乎我需要給每個元素轉換爲它的類型,以便訪問其Name
財產。通過StackPanel的兒童在WPF
但是如果我有很多不同類型的在StackPanel中,我只是想獲得元素的名字嗎?
有沒有更好的方式來做到這一點?
這裏是我試過:
foreach (object child in tab.Children)
{
UnregisterName(child.Name);
}
循環我有一個StackPanel
是充滿控制,我通過元素試圖循環,並得到他們的名字,但似乎我需要給每個元素轉換爲它的類型,以便訪問其Name
財產。通過StackPanel的兒童在WPF
但是如果我有很多不同類型的在StackPanel中,我只是想獲得元素的名字嗎?
有沒有更好的方式來做到這一點?
這裏是我試過:
foreach (object child in tab.Children)
{
UnregisterName(child.Name);
}
這應該足以強制轉換爲正確的基類。從FrameworkElement
下降 任何事物都有一個名稱屬性。
foreach(object child in tab.Children)
{
string childname = null;
if (child is FrameworkElement)
{
childname = (child as FrameworkElement).Name;
}
if (childname != null)
...
}
你可能只是使用foreach循環變量相應類型:
foreach (FrameworkElement element in panel.Children)
{
var name = element.Name;
}
這個工作,只要有只有FrameworkElement
的面板中派生的控件。如果還有其他人(比如從UIElement
僅派生),你可能會這樣寫:
using System.Linq;
...
foreach (var element in panel.Children.OfType<FrameworkElement>())
{
var name = element.Name;
}
使用LINQ:
foreach(var child in tab.Children.OfType<Control>)
{
UnregisterName(child.Name);
}
怎麼樣'childname =(孩子一樣FrameworkElement的)?名稱;'? – Default
這是2013年的答案,沒有'?'呢。我不會在任何地方翻新。我不確定是否總是更好,這裏'((FrameworkElement)child).Name'可能是最優化的形式。 –
是的,我想你是在編輯答案。我看到了日期。 – Default