Я создаю пользовательский интерфейс wpf в powershell, используя xaml. Я пытаюсь заполнить поле со списком массивом, и всякий раз, когда я загружаю окно / комбинированный список, не появляется никаких вариантов для выбора. Я пробовал несколько способов решить эту проблему, в том числе с помощью элемента ItemsSource в блоке сценариев xaml, с помощью DisplayMemberPath внутри и снаружи блока xaml, создавая функцию, помогающую отображать окно, а затем передавая переменные изнутри окна в блок сценариев.
Пожалуйста, дайте мне знать, что я делаю неправильно - любая помощь приветствуется.
Do {
Connect-AzAccount -ErrorAction SilentlyContinue
$AzureAccount = Get-AzContext
$CurrentAccount = $AzureAccount.Account.Id
$CurrentAccount
} While ([String]$AzureAccount::isnullorempty)
Do {
# Select Subscription
Try {
$azureSubscription = (Get-AzSubscription | Sort-Object Name | Out-GridView -Title "Choose your Azure subscription and click OK." -PassThru)
Write-host "Switching to Azure subscription: $($azureSubscription.Name)" -ForegroundColor Green;
$azureSubscriptionInfo = Select-AzSubscription -SubscriptionId $azureSubscription.Id
} Catch {
Write-Output "Script Terminated"
}
# Select Location
Try {
$azureLocation = (Get-AzLocation | Sort-Object Name | Out-GridView -Title "Chosose your Azure location and click OK." -PassThru)
Write-Host "Switching to Azure location: $($azureLocation.DisplayName)" -ForegroundColor Green
} Catch {
Write-Output "Script Terminated"
}
if ([String]$azureSubscription::isnullorempty) {
$Primary = "False"
} elseif ([String]$azureLocation::isnullorempty) {
$Primary = "False"
}
} while ($Primary -eq "False")
# Get Virtual Networks and associated Subnets
$vnet = Get-AzVirtualNetwork
$vnetList = @()
$subnetsList = @()
foreach ($vn in $vnet) {
if ($vnet.Location -eq $azureLocation.Location) {
$vnetList += $vnet.Name
$subnetsList += $vnet.Subnets.Name }
}
$vnetList = $vnetList | Where-Object { $_ } | Select-Object -Unique
$subnetsList = $subnetsList | Where-Object { $_ } | Select-Object -Unique
Add-Type -AssemblyName PresentationFramework
[xml]$xaml = @"
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Name="Window" Title="Virtual Machine Deployment Tool" WindowStartupLocation="CenterScreen"
SizeToContent="WidthAndHeight" >
<Grid x:Name="Grid">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel Margin="10">
<ComboBox x:Name="vnselect" Margin="5" Width="100" />
</StackPanel>
</Grid>
</Window>
"@
$reader = (New-Object System.Xml.XmlNodeReader $xaml)
$window = [Windows.Markup.XamlReader]::Load($reader)
$window.ShowDialog() | Out-Null
$vnselect = $window.FindName("vnselect")
foreach ($item in $vnetList) {
$vnselect.Items.Add($item)
}