如题

类似这种,下拉一个筛选“隐藏/显示”列表,
我想要实现在两种状态下的不同结果 窗口类的.cs文件中有一个dataPageNumber变量,
,点击下拉按钮后,显示下拉内容,获得绑定集合的实体目标属性的单列去重结果集显示在“隐藏/显示”列表中,如果点击确定按钮,则将未勾选的项在datagrid控件中进行隐藏,但不删除datagrid的绑定数据集合的内容。
我想到的是自定义dataGridColumn.HeaderTemplate的模板,里面放个textbox和按钮样式的checkbox以及Popup,checkbox决定Popup展开或隐藏,点击列里的按钮实现下拉ui效果,展开时扫描绑定数据集合的指定属性,获得改去重结果集。并显示到在“隐藏/显示”列表中。
难点是如何获得绑定目标属性的去重结果集显示在"隐藏/显示选择列表"里?然后又怎么实现点击的隐藏或显示(点击确定按钮后),以及复用到其他列问题?
复用这些到设置到其他指定列的c#代码编写问题。我希望能根据自定义HeaderTemplate内的模板的某个控件的字符串属性来作为参数,用该参数指定点击下拉按钮展开式,扫描获取的DataGrid绑定的数据集合的指定属性列的去重结果集,并显示到在“隐藏/显示”列表中。
这些要怎么做