2014-03-04 38 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方法