Come eseguire il loop degli articoli statici StackPanel di WPF?
-
07-07-2019 - |
Domanda
Probabilmente molto facile, ma ho difficoltà a capirlo (anche Google non sembra aiutare molto).
Come posso scorrere gli elementi dichiarati staticamente (nessun databinding - gli elementi sono dichiarati in xaml) di uno StackPanel?
Qualsiasi aiuto apprezzato!
Soluzione
Intendi i figli di StackPanel
?
foreach (var child in stackPanel.Children)
{
//do something with child
}
Una soluzione più generica che funzionerebbe indipendentemente dal genitore sarebbe usare LogicalTreeHelper
o VisualTreeHelper
, a seconda dell'albero WPF che vuoi attraversare:
foreach (var child in LogicalTreeHelper.GetChildren(stackPanel))
{
//do something with child
}
Altri suggerimenti
Pensavo esattamente come Johnldol, poiché nel mio caso avevo un figlio e conoscevo il suo tipo; Non volevo oscurare il mio codice con un loop non necessario. Quindi è così che ho raggiunto TextBlock all'interno del collegamento ipertestuale:
var looper = LogicalTreeHelper.GetChildren(objHyperlink).GetEnumerator();
looper.MoveNext();
TextBlock objTextBlock = (looper.Current as InlineUIContainer).Child as TextBlock;