首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用TextBox - PowerShell改变TextBox-PowerShell

用TextBox - PowerShell改变TextBox-PowerShell
EN

Stack Overflow用户
提问于 2016-07-29 15:58:55
回答 1查看 1.3K关注 0票数 0

背景:

我正在使用XML和PowerShell创建一个GUI。我正在使用PowerShell向GUI添加功能。在我的GUI中,有Comboboxes (下拉meuns),也有一个textbox,它过滤了Datagrid的结果。我目前正在用文本框的结果来修改Datagrid。

我想要达到的目标:

当文本输入到文本框中时,数据栅格中的更改结果。例如,如果用户输入"W",将列出以"W“开头的所有结果。

问题:

我在改变数据格力的内容上有困难。我尝试过编辑ItemsSource。这不起作用,因为当用户从文本框中撤回字符时,数据农业没有重新填充表。我还试图编辑Datagrid的Items属性。但是,items属性不可编辑。我找到了一个类似的这里问题的解决方案,但是我无法在我当前的代码中使用他的解决方案。

代码:

代码语言:javascript
复制
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) } 

}) 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-29 16:49:13

我认为最好是让DataTable对象而不是数组。

然后,您可以将其作为DataSource放在DataGrid控件中,然后轻松地执行如下过滤:

代码语言:javascript
复制
$DataSource.DefaultView.RowFilter = "Column1 LIKE 'W%'"
$DataGrid.DataSource = $DataSource

我已经做了一个例子,它是如何工作的。我希望能得到这个主意。

代码语言:javascript
复制
$dt = New-Object system.Data.DataTable
$dt.Columns.Add((New-Object System.Data.DataColumn('Column1', 'string')))
$dt.Columns.Add((New-Object System.Data.DataColumn('Column2', 'int')))
$dt.Columns.Add((New-Object System.Data.DataColumn('Column3', 'string')))
$null=$dt.Rows.Add('RowOne',100,'This')
$null=$dt.Rows.Add('RowTwo',150,'That')
$null=$dt.Rows.Add('RowThree',200,'What')

$filter = "Column2 > 100 AND Column3 LIKE 'W%'"
$dt.DefaultView.RowFilter = $filter
$dt.DefaultView

Column1  Column2 Column3
-------  ------- -------
RowThree     200 What   
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38663029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档