WPF datagrid从所选行获取所选组合框值(Powershell)
因此,也许我的做法是错误的,请随意给出任何建议或提示。 目前正在使用powershell处理wpf中的DataGrid表以执行所有逻辑。这是表格: 从选定行正确提取所有数据(包括combobox选定值)的最佳方法是什么? 目前我正在尝试:WPF datagrid从所选行获取所选组合框值(Powershell),wpf,powershell,combobox,binding,datagrid,Wpf,Powershell,Combobox,Binding,Datagrid,因此,也许我的做法是错误的,请随意给出任何建议或提示。 目前正在使用powershell处理wpf中的DataGrid表以执行所有逻辑。这是表格: 从选定行正确提取所有数据(包括combobox选定值)的最佳方法是什么? 目前我正在尝试: $test = $AddServerwpf.ServerGrid.SelectedItems[0] Write-Host "Selected: $test" 对于上下文,$AddServerwpf包含该窗口的所有对象。ServerGrid是DataGrid
$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
这显然没有告诉我从下拉列表中选择了哪个帐户。如何获得组合框选择?我已经在谷歌上深入研究了关于这个问题的其他问题,但我没有找到一个有效的答案。如何将combobox正确绑定到datagrid?还是以某种方式访问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>
您应该将组合框的SelectedItem属性绑定到数据对象的属性,其中已经定义了服务器、环境和ServiceAccount属性:
<ComboBox x:Name="ServiceAccount" ItemsSource="{Binding ServiceAccount}"
SelectedItem={Binding SelectedAccount, UpdateSourceTrigger=PropertyChanged}" />
然后,您可以使用此属性获取项目的选定值,例如:
$AddServerwpf.ServerGrid.SelectedItems[0].SelectedAccount
$list = "account1","account2","account3"
$AddServerwpf.ServerGrid.AddChild([pscustomobject{Server='server1';Environment='Prod';ServiceAccount=$list;SelectedAccount='account1'})
$AddServerwpf.ServerGrid.AddChild([pscustomobject]@{Server='server2';Environment='Prod';ServiceAccount=$list;SelectedAccount='account1'})
$AddServerwpf.ServerGrid.AddChild([pscustomobject]@{Server='server3';Environment='Prod';ServiceAccount=$list;SelectedAccount='account1'})
$AddServerwpf.ServerGrid.SelectedItems[0].SelectedAccount