Так что, возможно, я подхожу к этому неправильно, не стесняйтесь давать любые советы или подсказки.
В настоящее время работаем с таблицей DataGrid в wpf, используя powershell для выполнения всей логики. Вот таблица:
Каков наилучший способ правильно извлечь все данные, ВКЛЮЧАЯ выбранное значение в выпадающем списке из выбранной строки?
В настоящее время я пытаюсь это:
$test = $AddServerwpf.ServerGrid.SelectedItems[0]
Write-Host "Selected: $test"
Для контекста $ AddServerwpf содержит все объекты для этого окна. ServerGrid - это объект DataGrid. Я использую .SelectedItems [0], чтобы получить эту строку.
Возвращает:
Selected: @{Server=server1; Environment=Prod; ServiceAccount=System.Object[]}
Если я сделаю еще один шаг с:
$AddServerwpf.ServerGrid.SelectedItems[0].ServiceAccount
Я получаю:
Selected: account1 account2 account3
Это явно не говорит мне, какая учетная запись была выбрана из выпадающего списка. Как я могу получить выбор в выпадающем списке? Я посмотрел довольно глубоко через Google с другими вопросами по этому поводу, и я не нашел рабочего ответа. Как правильно связать комбинированный список с сеткой данных? Или лучше как-нибудь добраться до объекта Combobox и извлечь текст?
Вот XAML:
<Window x:Class="ServerManagmentApp.AddServer" x:Name="AddServerWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ServerManagmentApp"
mc:Ignorable="d"
Title="AddServer" Height="359.7" Width="387.4" Background="#FF2B2929">
<Grid>
<Button x:Name="AddServerButton" Content="Add Server" HorizontalAlignment="Left" Margin="220,260,0,0" VerticalAlignment="Top" Width="120" Height="40" Background="#FF1FD14F"/>
<DataGrid x:Name="ServerGrid" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Height="213" Width="275" Background="#FF888F8A" SelectionMode="Single">
<DataGrid.Columns>
<DataGridTextColumn Header="Server" Binding="{Binding Server}" Width="*" />
<DataGridTextColumn Header="Environment" Binding="{Binding Environment}" Width="*" />
<DataGridTemplateColumn Header="ServiceAccount" Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox x:Name="ServiceAccount" ItemsSource="{Binding ServiceAccount}" SelectedIndex="0"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
Потратил пару часов, пытаясь обойти этот контрольно-пропускной пункт, и любая помощь будет принята с благодарностью. Я новичок в этом и пытаюсь понять, как работает эта привязка при использовании powershell.
EDIT:
Вот как я заполняю DataGrid, если это помогает
$list = "account1","account2","account3"
$AddServerwpf.ServerGrid.AddChild([pscustomobject{Server='server1';Environment='Prod';ServiceAccount=$list})
$AddServerwpf.ServerGrid.AddChild([pscustomobject]@{Server='server2';Environment='Prod';ServiceAccount=$list})
$AddServerwpf.ServerGrid.AddChild([pscustomobject]@{Server='server3';Environment='Prod';ServiceAccount=$list})