从代码背后使用RIA服务FilterDescriptor

时间:2010-06-08 11:00:03

标签: silverlight silverlight-4.0 wcf-ria-services

我想知道是否可以使用代码隐藏的FilterDescriptor控件?

在我的表单的页面加载中,我在后面的代码中设置网格的数据源,而不是使用DomainDataSource控件,如:

TestDomainContext context = new TestDomainContext();
dataGridEmployees.ItemsSource = context.EmployeePositions;
context.Load(context.GetEmployeesWithPositionQuery());

我的页面上有一个文本框,用户可以输入该文本框来过滤员工位置。

现在可以在后面的代码中将FilterDescriptor添加到DataGrid的源代码吗?或者我是否需要手动过滤context.GetEmployeesWithPositionQuery的结果,例如在过滤器TextBox的KeyUp事件上?

1 个答案:

答案 0 :(得分:2)

它对我有用,如下所示。

您可以添加一个DomainDataSource,但可以从后面的代码中控制它,而不是在xaml中声明:

DomainDataSource testDDS.DomainContext = context;
testDDS.QueryName = "GetEmployeesWithPositionQuery";
testDDS.Load;

然后,当我在Set FilterDescriptor in code - C# Silverlight 4 WCF中阅读时,您可以在后面的代码中创建一个FilterDescriptor并将其添加到您的DDS中:

FilterDescriptor testFilter = new FilterDescriptor() { PropertyPath = "Name",
Operator = FilterOperator.Contains };
Binding nameBinding = new Binding("Text") { ElementName = "txtFilterName" };
BindingOperations.SetBinding(testFilter, FilterDescriptor.ValueProperty, nameBinding);
testDDS.FilterDescriptors.Add(testFilter);

希望这有帮助,

倒装