我启动并运行了Silverlight PivotViewer,大约有4000个项目。
我将查询字符串参数传递给托管PivotViewer的页面,以便在打开时过滤项目。
如何以编程方式向PivotViewer添加过滤器?
我试过了:
pvtTest.AppliedFilters.Add(new KeyValuePair<string, IList<string>>("Color", new List<string> { "EQ.Green", "EQ.Red" }));
但它仍会显示所有项目。在使用UI设置一些过滤器之后,我还尝试检查了AppliedFilters属性的值,但它仍然只包含我在上面添加的过滤器。
答案 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);
我希望这可以帮助其他人解决同样的问题。