2017-10-24 15 views
0

私の同僚のGUIインターフェイスで作業しています。ユーザーがチェックボックスをオンにしているときにチェックボックスとリストボックスを追加したいと思っています。ListViewからCheckboxイベントをキャプチャする

Capture from my "training" GUI

私は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チェックボックスを除いて、リストビューにどこでも素晴らしい作品。

+0

ビュー列でPropertyChangedイベントを使用しようとしましたか? '$ mainWindow.listSort.View.Columns [0] .add_PropertyChanged({})' – TheMadTechnician

+0

悲しいことに、それはうまくいかないようです。 「propertychanged」イベントは、ウィンドウが表示されている状態からロードされたときにのみトリガされます。しかし、私は列で "遊ぶ"を続けるだろう、我々は決して...;) –

+0

個々のアイテムにイベントトリガーを追加することを検討しましたか? – TheMadTechnician

答えて

0

本当にXAML UIが必要な場合は、この回答は適用されません。個人的に、私はPowerShellでGUIを書くことはしません...

Out-GridViewについて考えましたか?

$data = @(
[PSCustomObject]@{Name='Name1'; Description='Description1'} 
[PSCustomObject]@{Name='Name2'; Description='Description2'} 
[PSCustomObject]@{Name='Name3'; Description='Description3'} 
) 
$data | Out-GridView -Title MyTitle -OutputMode Multiple 
+0

お返事ありがとうございます!私は既にいくつかの「クイックインフォメーション」のためにOut-Gridviewを使用していますが、私の場合、リストビューは私が開発している大きな「ツール」のほんの一部です。 –

関連する問題