在WPF数据网格中输入提前搜索

本文关键字:输入 搜索 网格 WPF 数据 数据网 | 更新日期: 2023-09-27 18:02:14

嗨,我有一个收集学生的网格

public class Student
{
public string First{get;set;}
public string Last{get;set;}
public int Age{get;set;}
}
MyGrid.ItemsSource= new List<Student>(){new Student{First="First1",Last="Last1",Age=1},
new Student{First="First2",Last="Last2",Age=2}},
new Student{First="First3",Last="Last3",Age=3}},
new Student{First="First4",Last="Last4",Age=4}},};

现在,在页面或网格加载后,用户只需输入一些字符,应用程序必须选择与用户输入的名字或姓氏相匹配的特定行。

这与我们在windows资源管理器或visualstudio中看到的非常相似,只需在Win资源管理器中输入to select folder或在visualstudio中输入。cs文件。

在WPF数据网格中输入提前搜索

经过两天的研究我终于找到了答案。

实现这个功能非常简单。

将附加属性设置为所需的属性名称,它会神奇地工作。

TextSearch.TextPath="First"

您的DataGrid将如下:

<DataGrid x:Name="myDataGrid" AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding Key}" Header="Key"/>
                <DataGridTextColumn Binding="{Binding Value}" Header="Value"/>
            </DataGrid.Columns>
        </DataGrid>

如果你想要像Key x Value这样的东西,你不需要为此创建一个model, .NET Framework 4.5已经为此创建了一个特定的类,类Dictionary <TKey, TValue> (TKey是关键数据的类型,TValue是值数据的类型,所以你需要一个C#代码类似(或等于)以下:

Dictionary<string, string> dictionary = new Dictionary<string, string>()
{
     {"Key1","Value1"},
     {"Key2","Value2"},
     {"Key3","Value3"}
};
this.myDataGrid.ItemsSource = dictionary;