【发布时间】:2023-03-09 06:08:01
【问题描述】:
我正在尝试使用 WPF 创建一个简单的 Datagrid,这样每一行都有一个复选框。我在检索数据时遇到了困难。我只得到 1 个结果。我可以在下面的 XAML 中修复什么
<DataGrid x:Name="details" x:Uid="MyDataGrid" AutoGenerateColumns="False" AlternationCount="1" SelectionMode="Single" IsReadOnly="True" HeadersVisibility="Column" Margin="0,0,10,2" HorizontalAlignment="Right" Width="410" Grid.Column="1" Grid.Row="1" >
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.Header>
<CheckBox Content=" Select All" x:Name="headerCheckBox" />
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Name="chkDiscontinue" IsChecked="{Binding Path=IsChecked,ElementName=headerCheckBox,Mode=OneWay}" Margin="45 2 0 0" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Binding="{Binding Path=file_name}" Header="File Name" Width="2*" IsReadOnly="True" />
<DataGridTextColumn Binding="{Binding Path=file_path}" Header="File Path" Width="0.9*"/>
</DataGrid.Columns> </DataGrid>
这就是我试图检索的方式:
$inputXML = $inputXML -replace 'mc:Ignorable="d"','' -replace "x:N",'N' -replace '^<Win.*', '<Window'
[void][System.Reflection.Assembly]::LoadWithPartialName('presentationframework')
[xml]$XAML = $inputXML
#Read XAML
$reader=(New-Object System.Xml.XmlNodeReader $xaml)
try{$Form=[Windows.Markup.XamlReader]::Load( $reader )}
catch{Write-Host "Unable to load Windows.Markup.XamlReader. Double-check syntax and ensure .net is installed."}
#===========================================================================
# Store Form Objects In PowerShell
#===========================================================================
#$xaml.SelectNodes("//*[@Name]") | %{Set-Variable -Name "var_$($_.Name)" -Value $Form.FindName($_.Name) -Scope Global }
$xaml.SelectNodes("//*[@Name]") | %{Set-Variable -Name "var_$($_.Name)" -Value $Form.FindName($_.Name) }
$var_search_button.Add_Click({
#JUST TO DISPLAY SOME RANDOM DATA(IT WORKS)
$t = Import-Csv .\imp.csv
$t | Select @{name = "file_name"; ex={$_.id}},@{name = "file_path"; ex={$_.name}} |% {$var_details.AddChild($_)}
#TRYING TO RETRIVE THE ROWS WHICH I CHECK IN UI
echo "__Show FORM DATA" | Out-File "imp.txt"
$var_details.SelectedCells | Out-File "imp.txt" -Append
$var_details.SelectedItems | Out-File "imp.txt" -Append
})
$Form.ShowDialog() | out-null
#-------------------------------------
【问题讨论】:
-
您是如何尝试获取这些值的?向我们展示您的代码,而不仅仅是 xaml。这似乎很好,所以这是你的代码。
-
先生,我也更新了代码。请检查
标签: wpf visual-studio powershell xaml user-interface