이 내가이 뷰 모델의 수집에 XamDataPresenter (XamDataGrid)를 구속했다 :WPF Caliburn : 컬렉션 항목의 값이 변경 될 때 인식
의 의의 XAML :
<igDP:XamDataPresenter x:Name="dataPresenter" DataSource="{Binding Path=AppServers, UpdateSourceTrigger=PropertyChanged}" IsSynchronizedWithCurrentItem="True">
</igDP:XamDataPresenter>
코드 :
public ShellViewModel()
{
AppServers = new BindingListCollectionView(new BindingList<AppServer>(_context.GetAllAppServers()));
AppServers.CurrentChanged += new EventHandler(AppServers_CurrentChanged);
}
void AppServers_CurrentChanged(object sender, EventArgs e)
{
NotifyOfPropertyChange(() => CanSaveAppServers);
NotifyOfPropertyChange(() => CanDeleteAppServers);
}
CanSaveAppServers 속성 :
public bool CanSaveAppServers
{
get
{
return (_appServers.SourceCollection as BindingList<AppServer>).Any(x => x.ChangeTracker.State != ObjectState.Unchanged);
}
}
컬렉션의 항목이 변경되면 CanSaveAppServers 속성이 false 여야합니다. 그러나 CanSaveAppServers는 어떻게 호출됩니까? 다른 이벤트? 또는 잘못된 컬렉션 유형? 어떤 방식 으로든 자동으로이 작업을 수행해서는 안됩니까?
미리 감사드립니다.