2

我有一个 Silverlight PivotViewer 正在运行,大约有 4000 个项目。

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

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

我试过了 :

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

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

4

3 回答 3

2

对于 PivotViewer-2

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

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

pvViewer.Filter = sFilter; //reassign filter
于 2012-11-29T16:36:23.043 回答
1

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

它有一个非常具体的语法,可以在这里找到。

于 2011-09-19T10:26:02.007 回答
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);

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

于 2012-09-19T13:24:12.220 回答