我需要將一組值傳遞給DomainService方法。以下是我想要的服務方法的樣子:XAML/Silverlight:將集合(例如ListBox.SelectedItems)傳遞給DomainService方法
IQueryable<Person> GetPeople(Nullable<DateTime> MinDOB, IList<String> Ethnicities)
{
return
from
Person item in ObjectContext.People
where
item.DOB >= MinDOB
&& Ethnicities.Contains(item.ETHNICITY)
select
item;
}
該查詢工作正常,沒有參數,只用DOB參數,它工作正常。在XAML中,我可以通過QueryParameters/QueryParameter將DOB參數作爲參數傳遞給service方法,或者我可以使service方法爲nonary,讓它返回所有內容,並將DOB參數粘貼到FilterDescriptor中。這兩個工作(一個警告:我無法弄清楚如何使FilterDescriptor XAML的IgnoredValue屬性工作與一個空的DateTime)。到現在爲止還挺好。但日期是標量,ListBox.SelectedItems不是。
我不斷收到服務方法中的「必須是預定義的可序列化類型之一」的錯誤,就像上面定義的那樣(MSDN中的那些禁止猩紅類型的列表,不管怎麼樣?),以下代碼不會「T工作,要麼:
<ria:DomainDataSource.FilterDescriptors>
<ria:FilterDescriptor PropertyPath="ETHNICITY" Operator="IsContainedIn" Value="{Binding ElementName=_lbEthnicities, Path=SelectedItems}" />
</ria:DomainDataSource.FilterDescriptors>
它拋出‘操作員「IsContainedIn字符串‘和‘ObservableCollection`1’與操作數類型不兼容’---> System.ArgumentNullException:值不能爲空。’
我是否應該放棄並定義客戶端C#代碼來將選定的列表框值填充到帶有分隔符的字符串中?我試圖將聲明式的東西推到這裏,但是這裏有一個限制。
由Jove,這應該工作。謝謝! – 2011-02-19 04:11:25