正在更新WPF XAML组合框从powershell中选择项

7cjasjjr  于 2022-11-18  发布在  Shell
关注(0)|答案(2)|浏览(133)

我只是简单地尝试改变powershell下拉列表中的选定项。每当我用途:
$dg_服务器.项目[0].cbox_磁盘.选定项目= 88
我收到错误:
“...在此对象上找不到.请验证该属性是否存在并且可以设置.”
下面是我的XAML:

DataGridTemplateColumn Header="DiskC" Visibility="Visible" Width="61"  >
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                               <ComboBox
                               ItemsSource="{Binding Path=cbox_DiskC}"
                               SelectedItem="{Binding Path=cbox_DiskD, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
                            </ComboBox>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>

我不知道我在这里错过了什么...似乎这应该是超级容易的。系统。Windows。窗体使这成为一个没有头脑的完成。
编辑-添加powershell端:

$row= New-Object NewRow -Property @{ServerName = ""; cbox_DiskC = (80..250); cbox_DiskD = (50..250); cbox_DiskE = (1..250); cbox_DiskF = (1..250); cbox_DiskG= (1..250); cbox_Mem=(1..16); cbox_CPU=(1..8); cbox_OSSpec = $Options_OSSpecs; cbox_Template = $Options_Templates; cbox_VLAN = $Options_VLAN ; cbox_Folder =  $Options_Folders }
$itemsource = New-Object -TypeName System.Collections.ObjectModel.ObservableCollection[object] -ArgumentList @($row)
$dg_Servers.ItemsSource = $itemsource

我今天早上读到你必须使用一个可观察的集合,以便用户界面被通知的变化和刷新..但我仍然没有任何运气。我只使用一个线程,所以也许这是问题?
我试图用另一个按钮单击事件更改组合框的下拉选择。

$btn_Validate.Add_Click({$dg_Servers.SelectedItems[0].cbox_DiskC = 88})

但正如我所说,当我点击UI上的按钮时,没有任何变化,选择保持不变。

fwzugrvs

fwzugrvs1#

您应该设定系结至ComboBoxSelectedItem属性的cbox_DiskD来源属性:

$dg_Servers.Items[0].cbox_DiskD = 88
webghufk

webghufk2#

可能不是正确的方法,但在这一点上,我已经花了太多的时间试图找出一个更好的方法:)
我必须绑定到我的类中的一个不同的元素。使它们不同允许我在下拉列表中保留我的所有项目并选择一个特定的项目。否则,如果我保持它们相同,我的所有项目都会消失,并且它被设置为88。(注意:cbox_DiskC作为项源,cbox_DiskC_selected作为下面的选定项)

<DataGridTemplateColumn Header="DiskC" Visibility="Visible" Width="61" >
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                               <ComboBox                           
                               ItemsSource="{Binding Path = cbox_DiskC}"
                               SelectedItem="{Binding Path=cbox_DiskC_selected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
                            </ComboBox>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>

一旦我这样做了,在add_click中,我基本上$nulled了itemsource,并重新添加它,这迫使我的GUI刷新。

$btn_Validate.Add_Click({$row.cbox_DiskC_selected = 88; $dg_Servers.ItemsSource = $null; $dg_Servers.ItemsSource = $itemsource})

稍后,我将创建一个函数来执行刷新操作,以便稍微清理一下。

相关问题