2014-03-04 39 views
0

我是WPF的新手。我想,以填补组合框与从WCF服务检索观察的集合使用wcf服务消耗的可观察列表填充Combobox

XAML代码:

<ComboBox x:Name="cmbclass" ItemsSource="{Binding ClassList}" VerticalAlignment="Top" DisplayMemberPath="ClassName" SelectedValuePath="ClassID"/> 

消费服务:

ServiceReference1.Service1Client ClassList = new ServiceReference1.Service1Client(); 
ObservableCollection<ClassDO> Classlist = new ObservableCollection<ClassDO>(); 
Classlist = (ObservableCollection<ClassDO>)ClassList.GetClassList(); 
cmbclass.ItemsSource = Classlist; 
cmbclass.DisplayMemberPath = "ClassID"; 
cmbclass.SelectedValuePath = "CLassName"; 

我收到以下错误谁能帮帮我吗?

错误1
'SchoolManagementSystem.ServiceReference1.ClassDO []' 到 System.Collections.ObjectModel.ObservableCollection” d:\ DOTNET \项目\ WPF \ WindowsPhoneApps \ SchoolManagementSystem \ SchoolManagementSystem \ MainWindow.xaml.cs 37 23 SchoolManagementSystemCannot转换类型

任何帮助,将不胜感激。

+0

哈哈疯狂编辑 – 2014-03-04 12:04:52

+0

@mehow SP杀死所有编辑':)' –

+0

gosh这将很快成为维基:P – 2014-03-04 12:07:55

回答

0

请看看这段代码。这个例子是使用MVVM design pattern

视图模型

public class MainViewModel 
{ 
    public MainViewModel() 
    { 
     ServiceReference1.Service1Client client = new erviceReference1.Service1Client(); 
     Classlist = new ObservableCollection<ClassDO>(client.GetClassList()); 
    } 

    public ObservableCollection<ClassDO> ClassList { get; set; } 
} 

<ComboBox ItemsSource="{Binding ClassList}" VerticalAlignment="Top" DisplayMemberPath="ClassName" SelectedValuePath="ClassID"/> 

并且在视图的代码隐藏设置的DataContext

this.DataContext = new MainViewModel(); 

在这个例子中,我假设GetClassList() IEnumerable的ClassDO返回

0

我如何填写与观察到的集合哗哗组合框从WCF消耗 XAML代码:

<ComboBox x:Name="Cmbclass" ItemsSource="{Binding Classlist}" VerticalAlignment="Center" DisplayMemberPath="ClassName" SelectedValuePath="ClassID" Loaded="CmbClassListLoaded"></ComboBox> 

Consumingservice:

public void GetClassList() 
{ 
ServiceReference1.Service1Client ServiceClient = new ServiceReference1.Service1Client(); 
ObservableCollection<ClassDO> Classlist = ServiceClient.GetClassList(); 
Cmbclass.ItemsSource = Classlist; 
Cmbclass.DisplayMemberPath = "classname"; 
//Cmbclass.se = "ClassID"; 
Cmbclass.SelectedValuePath = "classid"; 

} 

现在叫Getclasslist在windowload方法