私の同僚のGUIインターフェイスで作業しています。ユーザーがチェックボックスをオンにしているときにチェックボックスとリストボックスを追加したいと思っています。ListViewからCheckboxイベントをキャプチャする
私はStackOverflowのとTechNetの検索をたくさんやったし、これまでのところ、私は私が望むように私は(結合して)設定することができ、いくつかのチェックボックスを得たが、私は作成することができませんよかチェックイベントのイベントをキャプチャします。
試してみるには少しGUIインターフェイスを作っています。だから私のXAMLコードは次のようになります。
<Window
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:GUI_Techgenix"
mc:Ignorable="d"
Title="Powershell GUI Training" Height="250" Width="400">
<Grid>
<ListView x:Name="listSort" HorizontalAlignment="Left" Height="132" Margin="15,15,0,0" VerticalAlignment="Top" Width="350">
<ListView.View>
<GridView AllowsColumnReorder="true" ColumnHeaderToolTip="InfoPaquet">
<GridViewColumn Header="Play">
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Play}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding Path=PkgName}">
<GridViewColumnHeader>Package Name</GridViewColumnHeader>
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding Path=ProgramName}">
<GridViewColumnHeader>Program Name</GridViewColumnHeader>
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding Path=SequenceID}">
<GridViewColumnHeader>SequenceID</GridViewColumnHeader>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</Grid>
</Window>
そして、私のPowerShellのコードは次のようになります。
Set-Location $PSScriptRoot
#Loading modules
#Module to import XAML inspire by these nice walkthrough :
- https://foxdeploy.com/2015/04/16/part-ii-deploying-powershell-guis-in-minutes-using-visual-studio/
- http://techgenix.com/building-powershell-gui-part2/
Import-Module .\XAML-Loader -ErrorAction Stop
$mainWindow = Open-XamlForm(".\FormTest.xaml")
$testobj = New-Object -TypeName PSObject
$testobj | Add-Member -MemberType NoteProperty -Name ("PkgName") -Value "Test"
$testobj | Add-Member -MemberType NoteProperty -Name ("ProgramName") -Value "Install"
$testobj | Add-Member -MemberType NoteProperty -Name ("Play") -Value "True"
$mainWindow.listSort.AddChild($testobj)
$testobj2 = New-Object -TypeName PSObject
$testobj2 | Add-Member -MemberType NoteProperty -Name ("PkgName") -Value "Test2"
$testobj2 | Add-Member -MemberType NoteProperty -Name ("ProgramName") -Value "Install Notes"
$testobj2 | Add-Member -MemberType NoteProperty -Name ("Play") -Value "False"
$mainWindow.listSort.AddChild($testobj2)
$mainWindow.listSort.add_MouseLeftButtonUp({
Write-host "ClickThatUp!"
})
$mainWindow.XamGUI.ShowDialog() | Out-Null
add_MouseLeftButtonUp
チェックボックスを除いて、リストビューにどこでも素晴らしい作品。
ビュー列でPropertyChangedイベントを使用しようとしましたか? '$ mainWindow.listSort.View.Columns [0] .add_PropertyChanged({})' –
TheMadTechnician
悲しいことに、それはうまくいかないようです。 「propertychanged」イベントは、ウィンドウが表示されている状態からロードされたときにのみトリガされます。しかし、私は列で "遊ぶ"を続けるだろう、我々は決して...;) –
個々のアイテムにイベントトリガーを追加することを検討しましたか? – TheMadTechnician