2
이것은 WPF의 첫 번째 경험이므로 용서 해주십시오. 저는이 것이 매우 기본적인 것임을 알고 있지만 작동시키지 못합니다. 난 단순히 콤보 상자를 LINQ to EF 채워진 ObservableCollection에 바인딩하려고합니다. 코드를 단계별로 실행하면 컬렉션이 채워지는 것을 볼 수 있지만 콤보 상자에는 컬렉션의 내용이 표시되지 않습니다.WPF LINQ에 채워지는 콤보 상자 채워지는 관측 가능 컬렉션
public class MainWindowViewModel : ViewModelBase
{
# region ObservableCollections
private ObservableCollection<Site> _sitescollection;
public ObservableCollection<Site> SiteCollection
{
get { return _sitescollection;}
set {
if (value == _sitescollection) return;
_sitescollection = value;
RaisePropertyChanged("SiteCollection");
}
}
# endregion
public MainWindowViewModel()
{
this.PopulateSites();
}
// Get a listing of sites from the database
public void PopulateSites()
{
using (var context = new Data_Access.SiteConfiguration_Entities())
{
var query = (from s in context.SITE_LOOKUP
select new Site(){Name = s.SITE_NAME, SeqId = s.SITE_SEQ_ID });
SiteCollection = new ObservableCollection<Site>(query.ToList());
}
}
}
내 사이트 클래스 :
public class Site : INotifyPropertyChanged
{
#region Properties
string _name;
public string Name
{
get
{
return _name;
}
set
{
if (_name != value)
{
_name = value;
RaisePropertyChanged("Name");
}
}
}
private int _seqid;
public int SeqId
{
get {
return _seqid;
}
set {
if (_seqid != value)
{
_seqid = value;
RaisePropertyChanged("SeqId");
}
}
}
#endregion
#region Constructors
public Site() { }
public Site(string name, int seqid)
{
this.Name = name;
this.SeqId = seqid;
}
#endregion
void RaisePropertyChanged(string prop)
{
if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(prop)); }
}
public event PropertyChangedEventHandler PropertyChanged;
}
그리고 내 XAML 바인딩 :
<ComboBox Margin="10"
ItemsSource="{Binding Sites}"
DisplayMemberPath="Name"
SelectedValuePath="SeqId" />
내가 뭘 잘못 여기에
내 뷰 모델인가? 어떤 도움이라도 대단히 감사하겠습니다.
감사합니다. @BradleyDotNET. 나는 내가 그것을 알아 차리지 못했다고 믿을 수 없다. 너무 당황해서 당황했습니다. – mack
@mack "MainWindowViewModel 개체의 속성 사이트를 찾을 수 없음"과 같은 출력 창에서 System.Data 예외를 확인해야합니다. 이러한 오류는 일반적으로이 물건을 더 빨리 찾을 수 있도록 도와줍니다. :) – BradleyDotNET
감사합니다. @BradleyDotNET, 이제 출력 창에 표시됩니다. 나는 그것에 더 많은 관심을 기울일 것이다! :) – mack