以编程方式设置PivotViewer的过滤器

时间:2011-09-09 06:34:01

标签: silverlight pivotviewer

我启动并运行了Silverlight PivotViewer,大约有4000个项目。

我将查询字符串参数传递给托管PivotViewer的页面,以便在打开时过滤项目。

如何以编程方式向PivotViewer添加过滤器?

我试过了:

pvtTest.AppliedFilters.Add(new KeyValuePair<string, IList<string>>("Color", new List<string> { "EQ.Green", "EQ.Red" }));

但它仍会显示所有项目。在使用UI设置一些过滤器之后,我还尝试检查了AppliedFilters属性的值,但它仍然只包含我在上面添加的过滤器。

3 个答案:

答案 0 :(得分:2)

对于PivotViewer-2

string sFilter = pvViewer.Filter; //get existing filter

pvViewer.ItemsSource = new-data-source; //assign new data source

pvViewer.Filter = sFilter; //reassign filter

答案 1 :(得分:1)

您可以使用ViewerState属性指定过滤器。

它有一个非常具体的语法,可以找到here

答案 2 :(得分:1)

我认为grimstoner的回答可能不够明确。

您确实可以使用ViewerState属性来设置过滤器,但不能直接设置它,因为它只有一个公共getter。解决方法是使用LoadCollection()方法传递已加载集合的URI和修改后的查看器状态。您可能希望Pivot Viewer将重新加载该集合,但事实并非如此。它似乎足够聪明,可以检测相同的URI并仅应用新的查看器状态。

示例:

string viewerState = pivotViewer.ViewerState;

// Modify the viewer state according to the rules defined at:
// http://www.silverlight.net/content/pivotviewer/developer-info/api/html/P_System_Windows_Pivot_PivotViewer_ViewerState.htm

pivotViewer.LoadCollection(pivotViewer.CollectionUri.ToString(), viewerState);

我希望这可以帮助其他人解决同样的问题。