У меня есть графический интерфейс Powershell, и я динамически генерирую некоторый элемент.Код ниже генерирует панель стека, а затем изображение и метку внутри панели стека.
$serverContainer= New-Object System.Windows.Controls.StackPanel
$serverContainer.Orientation="Vertical"
$serverContainer.Name="serverContainer"
$serverImg = New-Object System.Windows.Controls.Image $serverImg.Source = "Some value"
$serverImg.Name=$server
$serverImg.Width="75"
$serverImg.Margin="3,3,3,3"
$serverLabel=New-Object System.Windows.Controls.Label
$serverLabel.Content=$server
$serverLabel.HorizontalAlignment="center"
$serverLabel.HorizontalContentAlignment="center"
$serverContainer.Children.Add($serverImg)
$serverContainer.Children.Add($serverLabel)
$serverContainer.RegisterName($serverImg.Name,"xyz")
$serverContainer.RegisterName($serverProBarr.Name,"zxy")
Теперь проблема в том, что когда я запускаю программу, она отображает динамически добавленный элемент по назначению, что хорошо.Но кое-где еще в коде я хотел получить доступ к этим элементам, используя FindNames, но он просто возвращает мне имя, а не элемент.Также, когда я пытаюсь $ serverContainer.Children.count, я получаю 0, что означает, что в этой панели стека нет элемента, но элементы действительно отображаются в GUI.Интересно, что во время отладки я добавляю какой-либо элемент, а затем проверяю панель стека, он включает этот элемент, и я могу получить к нему доступ.похоже, что Stackpanel при создании динамического элемента должен сначала отображаться в графическом интерфейсе, прежде чем он сможет добавить дочерние элементы к свойству Children.