【发布时间】:2014-12-04 07:00:24
【问题描述】:
业务规则: 一个职位可以由一个职位空缺来填补,一个与职位空缺匹配的候选人可以被分配。 一个开口需要一个资格。 一个候选人可以有多个资格,并且一个资格可能由多个候选人获得,因此制作了关联证书以避免多对多关系。
问题: 主窗口显示资格、候选人和安置。为了添加展示位置,我单击具有 PlacementModel 数据上下文的添加展示位置窗口,并出现一个新窗口,其中包含 2 个列表框和一个用于完成添加的按钮,用户必须在列表框中选择一个开口和一个有资格的候选人列表匹配项出现在另一个列表框中。 2 列表框的绑定路径分别是Openings 和Certificates。 我想让证书列表框在我单击打开时更新其列表。
实体是候选人、资格、安置、证书和开放。
我该如何实现?
ListBoxes 绑定路径:
LstOpenings(ItemsSource = Openings, SelectedItem= SelectedOpening)
LstCertificates(ItemsSource = Certificates, SelectedItem = SelectedCertificate)
放置模型:
#region Public Interface
public ObservableCollection<OpeningModel> Openings { get; private set; }
public ObservableCollection<CertificateModel> Certificates { get; private set; }
public OpeningModel SelectedOpening { get { return _selectedOpening; } set { _selectedOpening = value; } }
public CertificateModel SelectedCertificate
{
get { return _selectedCertificate; }
set
{ _selectedCertificate = value;
}
}
#endregion
#region Private Helper
private void GetOpenings()
{`enter code here`
var all = _context.Openings.OrderBy(cust => cust.OpeningDescription).ToList()
.Select(
opening =>
new OpeningModel(opening, _context, _openingRepository, _companyRepository,
_qualificationRepository,_certificateRepository));
Openings = new ObservableCollection<OpeningModel>(all);
ICollectionView view = CollectionViewSource.GetDefaultView(Openings);
view.SortDescriptions.Add(new SortDescription( "OpeningDescription",ListSortDirection.Ascending));
}
private void GetCertificates()
{
if (_selectedOpening == null)
{
Certificates = new ObservableCollection<CertificateModel>();
}
else
{
var all =_certificateRepository.GetCertificates().Where(c => c.QualificationCode == _selectedOpening.QualificationCode)
.OrderBy(c => c.Qualification.QualificationDescription)
.ToList().Select(c=>new CertificateModel(c,_context,_certificateRepository,_candidateRepository,_qualificationRepository));
Certificates = new ObservableCollection<CertificateModel>(all);
ICollectionView view = CollectionViewSource.GetDefaultView(Certificates);
view.SortDescriptions.Add(new SortDescription("QualificationDescription", ListSortDirection.Descending));
}
}
#endregion
【问题讨论】:
标签: c# wpf entity-framework mvvm listbox