C# 在WPF中设计可重用查询编辑器的好方法是什么?

C# 在WPF中设计可重用查询编辑器的好方法是什么?,c#,wpf,mvvm,filter,custom-controls,C#,Wpf,Mvvm,Filter,Custom Controls,我正在考虑创建一个非常基本的查询编辑器(也可以称为数据过滤器),您可以使用它来创建带有和和或的基本查询。例如: (FirstName等于Brown和LastName以L开头)或Age小于10 这将是一个可视化查询编辑器,类似于 我想知道如何为这样一个控件设计一个API,这样它就可以重用,并且可以轻松地连接到不同的情况 我当时的想法是查询编辑器首先会获取列名和列类型。所以,也许它可以得到类似于list的东西,我写了一个简单的文本框,这比我想象的要困难得多。我的反馈是不要尝试解析和构建查询。一次解析

我正在考虑创建一个非常基本的查询编辑器(也可以称为数据过滤器),您可以使用它来创建带有
的基本查询。例如:

FirstName
等于
Brown
LastName
L
开头)或
Age
小于
10

这将是一个可视化查询编辑器,类似于

我想知道如何为这样一个控件设计一个API,这样它就可以重用,并且可以轻松地连接到不同的情况


我当时的想法是查询编辑器首先会获取列名和列类型。所以,也许它可以得到类似于
list的东西,我写了一个简单的文本框,这比我想象的要困难得多。我的反馈是不要尝试解析和构建查询。一次解析。向下解析并为每个术语分配一个类型(列、表、运算符、参数…)。检查语法。标记语法问题。最后建立查询。@Blam,你说“…不要尝试解析并建立查询”是什么意思?我以前在WPF中做过类似的事情。我有用于查询片段的数据对象(例如为
FirstName
配置的
StringQueryPiece
),用户可以将查询片段拖放到UI中的
Select
Where
OrderBy
部分。一旦他们对查询感到满意,整个查询将在SQL上构建、解析和运行。每个查询片段的实际SQL语法是由管理员用户输入的,因此用户可以根据需要添加/修改查询片段。