wpf - WPF 和 PowerShell:与 ItemTemplate 一起使用时在 ComboBox 上设置选定项
问题描述
我有以下组合框设置如下:
<ComboBox x:Name="ComboBoxCountry" HorizontalAlignment="Left" Margin="166,288,0,0" VerticalAlignment="Top" Width="470" Height="24" ScrollViewer.VerticalScrollBarVisibility="Visible">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding EnglishName}" />
</DataTemplate>
</ComboBox.ItemTemplate>
作为我的脚本的一部分,它提供了一些上下文是具有模板功能的用户创建脚本,我将所选项目与其他用户详细信息一起导出到 Json。我使用以下命令获取整个选定项目(为方便起见,我已从对象中删除了其他用户详细信息):
$UserObject = [PSCustomObject] @{
"Country" = $MainScreenComboBoxCountry.SelectedItem
}
当我稍后回来导入模板时,我的对象如下:
国家:@{TwoLetterISORegionName=AW; 英文名=阿鲁巴岛}
当我调用它时,它会正确扩展如下:
PS C:\Windows\system32> $JsonObject.UserDetails.Country
TwoLetterISORegionName EnglishName
---------------------- -----------
AW Aruba
但是当我尝试将组合框设置回该选定项目时,它不起作用。我使用的命令是:
$MainScreenComboBoxCountry.SelectedItem = $JsonObject.UserDetails.Country
但它不会选择该项目。我在程序加载时填充组合框,使用以下代码,效果很好:
Function Get-CountryCodes {
$AllCultures = [System.Globalization.CultureInfo]::GetCultures([System.Globalization.CultureTypes]::SpecificCultures)
$CountryDetails = @()
$AllCultures | ForEach-Object {
$DisplayName = $_.DisplayName.Split(“(|)”)
$RegionInfo = New-Object System.Globalization.RegionInfo $PsItem.Name
$CountryDetails += [PsCustomObject]@{
Name = $RegionInfo.Name
EnglishName = $RegionInfo.EnglishName
TwoLetterISORegionName = $RegionInfo.TwoLetterISORegionName
}
}
$Countries = $CountryDetails | Select-Object -Unique -Property TwoLetterISORegionName,EnglishName | Sort-Object EnglishName
$Countries = $Countries | Where-Object TwoLetterISORegionName -CMatch “^[A-Z]*$”
Return $Countries
}
$MainScreenComboBoxCountry.ItemsSource = Get-CountryCodes
奇怪的是我没有收到任何错误,但它只是没有设置所选项目。
解决方案
我设法用下面的代码解决了:
ForEach ($ComboBoxItem in $MainScreenComboBoxCountry.Items) {
If ($ComboBoxItem.EnglishName -eq $JsonObject.UserDetails.Country.EnglishName) {
$CorrectComboBoxItem = $ComboBoxItem
}
}
$MainScreenComboBoxCountry.SelectedIndex = $MainScreenComboBoxCountry.Items.IndexOf($CorrectComboBoxItem)
推荐阅读
- firebase - Vue.js 上带有图表的 Vuefire
- amazon-web-services - 通过 Ubuntu 堡垒到私有子网中的 EC2 实例的 SSH 隧道
- html - Ion-List 元素重叠 div 容器
- r - 如何摆脱 R 中具有相同名称的多个列?
- r - 生成一个 for 循环,该循环将制作绘图并为它们提供正确的标题
- pandas - 时间序列指数 Pandas 系列 - 如何屏蔽范围
- reactjs - 提交表单后如何在 React.js 中更新 DOM
- java - 如何从 MySQL 将确切的行数加载到 jTable 并对剩余的行进行分页?
- python - 简单的 SFTP 脚本
- javascript - PHP动态列表检索返回未定义索引