2014-01-29 3 views
1

, когда мы создаем автоматическое свойство ICollectionView, тогда событие CurrentChanged работает правильно после обновления коллекции Employee.Событие CurrentChanged ICollectionView не работает, если мы создаем полное свойство

public ICollectionView EmployeeCollectionView{get; set; } 

public EmployeeMasterViewModel(IEmployeeMasterView view, IUnityContainer container) 
{ 
GetEmployee(); 
EmployeeCollectionView.CurrentChanged += new EventHandler(EmployeeCollectionView_CurrentChanged); 
} 

И когда мы создаем полную собственность, событие CurrentChanged не работает.

private ICollectionView _employeeCollectionView; 
public ICollectionView EmployeeCollectionView 
{ 
    get { return _employeeCollectionView; } 
    set { _employeeCollectionView = value; OnPropertyChanged("EmployeeCollectionView");} 
} 


public EmployeeMasterViewModel(IEmployeeMasterView view, IUnityContainer container) 
{ 
    GetEmployee(); 
    EmployeeCollectionView.CurrentChanged += new EventHandler(EmployeeCollectionView_CurrentChanged); 
} 

void EmployeeCollectionView_CurrentChanged(object sender, EventArgs e) 
    { 
    var currentEmployee = EmployeeCollectionView.CurrentItem as EmployeeMaster; 
    } 

, пожалуйста, предложите, если я что-то упустил.

+0

Где вы инициализируете 'EmployeeCollectionView'? –

+0

перед «EmployeeCollectionView.CurrentChanged + = новый EventHandler (EmployeeCollectionView_CurrentChanged);" –

+0

Попробуйте указать значение по умолчанию для '_employeeCollectionView' .. – Sankarann

ответ

0

Вы связать EmployeeCollectionView_CurrentChanged событие после обновления коллекции сотрудников? Потому что если вы освежать коллекция работник затем EmployeeCollectionView_CurrentChanged соединение было потеряно.

как-

private void Refresh() 
{ 
    GetEmployee(); 
    EmployeeCollectionView.CurrentChanged += new EventHandler(EmployeeCollectionView_CurrentChanged); 
} 
+0

uff так много thnaks. –

+1

это будет утечка, потому что вы не отмените регистрацию старых событий, которые будут вести себя как сильные ссылки. – Herm

0

Вы пытались присвоить мероприятие частному члену? Также как ваша привязка сделана в файле xaml? я бы комментировать, но я не получил достаточно XP :-(

0

Если вы ожидаете EmployeeCollectionView изменить (который, кажется, так, в противном случае вам не нужно будет в OnPropertyChanged, я рекомендовал бы добавить события в инкубаторе вашей собственности, как следующее:

private ICollectionView _employeeCollectionView; 

public ICollectionView EmployeeCollectionView 
{ 
    get { return _employeeCollectionView; } 
    set 
    { 
    if (_employeeCollectionView != value) 
    { 
     if (_employeeCollectionView != null) 
     { 
     _employeeCollectionView.CollectionChanged -= EmployeeCollectionView_CurrentChanged; 
     } 
     _employeeCollectionView = value; 
     _employeeCollectionView.CollectionChanged += EmployeeCollectionView_CurrentChanged; 
     OnPropertyChanged("EmployeeCollectionView"); 
    } 

    } 
} 


public EmployeeMasterViewModel(IEmployeeMasterView view, IUnityContainer container) 
{ 
    GetEmployee();  
} 

private void EmployeeCollectionView_CurrentChanged(object sender, EventArgs e) 
{ 
    var currentEmployee = EmployeeCollectionView.CurrentItem as EmployeeMaster; 
} 
Смежные вопросы