【发布时间】:2016-07-29 15:58:55
【问题描述】:
背景:
我正在使用 XML 和 PowerShell 创建一个 GUI。我正在使用 PowerShell 向 GUI 添加功能。在我的 GUI 中,有组合框(下拉菜单)以及过滤数据网格结果的文本框。我目前正在使用文本框的结果更改 Datagrid。
我想要实现的目标:
Datagrid 中的结果会随着文本框中输入的文本而变化。例如,如果用户输入“W”,则将列出所有以“W”开头的结果。
问题:
我无法更改 Datagrid 的内容。我试图编辑 ItemsSource。这不起作用,因为当用户从文本框中收回字符时,Datagrid 没有重新填充表。我还尝试编辑 Datagrid 的 Items 属性。但是,items 属性不可编辑。我找到了类似问题here 的解决方案,但我无法在我当前的代码中使用他的解决方案。
代码:
add-type @"
public class Server
{
public Server() {}
public string Column1 { get; set; }
public string Column2 { get; set; }
public string Column3 { get; set; }
public string Column4 { get; set; }
public string Column5 { get; set; }
public string Column6 { get; set; }
}
"@ -Language CsharpVersion3
[System.Collections.ArrayList] $Server = New-Object "System.Collections.ArrayList"
$GUI | ForEach-Object {
$ServerToAdd = new-object Server
$ServerToAdd.Column1 = $_.Results1
$ServerToAdd.Column2 = $_.Results2
$ServerToAdd.Column3 = $_.Results3
$ServerToAdd.Column4 = $_.Results4
$ServerToAdd.Column5 = $_.Results5
$ServerToAdd.Column6 = $_.Results6
$Server.add($ServerToAdd) | Out-Null
}
$GUI.DataGrid.ItemsSource = $Server
$GUI.TextBox.Add_TextChanged({
$InputText = $GUI.TextBox.Text
$GUI.DataGrid.Items | Where-Object { $_.Column1.Contains($InputText) }
})
【问题讨论】:
标签: wpf powershell datagrid