CollectionViewSource将源代码绑定到webservice(使用WCF RIA服务和LINQ) - Si
本文关键字:服务 RIA LINQ Si WCF 使用 源代码 绑定 webservice CollectionViewSource | 更新日期: 2023-09-27 17:49:15
我有一个小问题,可能是愚蠢的,但我不能解决这个问题。无论如何,我要做的就是绑定我的CollectionViewSource。我在Silverlight 4中使用WCF RIA服务查询的源代码。
这是我的XAML:
<UserControl.Resources>
<CollectionViewSource x:Name="cvsServiceTypes" />
</UserControl.Resources>
<Grid>
<ComboBox Height="23" HorizontalAlignment="Left" ItemsSource="cvsServiceTypes" DisplayMemberPath="Type" SelectedValuePath="IDServicesType" Margin="154,51,0,0" Name="cbServiceType" VerticalAlignment="Top" Width="120" SelectedValue="{Binding fkservicetype, Mode=TwoWay}" />
</Grid>
And my CodeBehind:
public Services()
{
InitializeComponent();
webService.GetServiceTypesCompleted += (s, e) => { cvsServiceTypes.Source = e.Result; };
webService.GetServiceTypesAsync();
}
但它似乎不起作用…我做错了什么?
非常感谢!
我希望您不介意我忽略了web服务调用部分—看起来您正在努力将项目绑定到ComboBox,所以这是我要解决的部分。
你需要做以下事情:
- 创建一个ObservableCollection属性来包含你的项目。
- 绑定CollectionViewSource
- 绑定组合框。ItemsSource到CollectionViewSource.
- 在你的UserControl上设置数据上下文
下面是一个例子:
<UserControl ...>
<StackPanel>
<StackPanel.Resources>
<CollectionViewSource x:Key="cvs" Source="{Binding Path=Items}"></CollectionViewSource>
</StackPanel.Resources>
<ComboBox ItemsSource="{Binding Source={StaticResource ResourceKey=cvs}}" />
<ComboBox ItemsSource="{Binding Source={StaticResource ResourceKey=cvs}}" />
<ComboBox ItemsSource="{Binding Source={StaticResource ResourceKey=cvs}}" />
</StackPanel>
</UserControl>
代码:
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
this.DataContext = this;
_items.Add("a");
_items.Add("b");
}
private ObservableCollection<string> _items = new ObservableCollection<string>();
public ObservableCollection<string> Items
{
get { return _items; }
set { _items = value; }
}
}
您可以在web服务调用完成时将项目放入集合中,如下所示:
webService.GetServiceTypesCompleted += (s, e) =>
{
foreach (string s in e.result)
{
_items.Add(s);
}
};