我在Powershell中使用Visual Studio制作的WPF应用程序。我试图找出如何收集激活的复选框并根据选择运行命令。目前,我正在尝试显示一条消息,该消息将向用户显示他们的选择,以便在继续下一步之前进行确认。出于某种奇怪的原因,
if ($checkbox.checked -eq $true)
不起作用。
我想重新创建的是,如果我有一个包含以下复选框的列表框(在表单启动时都未选中):
Apples
Oranges
Bananas
并且用户选择Apples
& Bananas
,我想要一个消息框,显示用户已选择Apples & Bananas
。
[System.Windows.Forms.MessageBox]::Show(" show what the user has selected in this line" , "selection")})
并运行可编程到这些选择的命令。
对于更合适的上下文,我正在创建一个GUI来将用户添加到某些组(复选框允许一次添加到多个组)。在继续添加到相应的组之前,我想让用户确切地知道他们选择了哪些用户组。
感谢任何帮助,谢谢!
答案 0 :(得分:2)
您想要的属性是isChecked
,而不是checked
。简单的例子:
[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="Initial Window" WindowStartupLocation = "CenterScreen"
SizeToContent = "WidthAndHeight" ShowInTaskbar = "True" Background = "lightgray">
<StackPanel >
<CheckBox x:Name="CheckBox1" Content = 'Value for checkbox one'/>
<TextBox />
</StackPanel>
</Window>
"@
$reader=(New-Object System.Xml.XmlNodeReader $xaml)
$Window=[Windows.Markup.XamlReader]::Load( $reader )
$CheckBox1 = $Window.FindName("CheckBox1")
$CheckBox1.Add_Click({
if($CheckBox1.isChecked) {
$CheckBox1.Content | Out-Host
}
})
$Window.Showdialog() | Out-Null
答案 1 :(得分:0)
@sodawillow发布的解决方案有效。如果您需要输出用户的选择以进行确认,那么下面的代码就可以做到这一点。
for ($i=#; $i -le #; $i++){ if ($listbox.items.item($i).isChecked -eq $true)
{$string = $listbox.items.item($i).content
$collectionstring = @("$collectionstring" + "$string")}}
[System.Windows.Forms.MessageBox]::Show("$collectionstring" , "Status")