Наблюдаваната колекция не актуализира потребителския интерфейс

Изчетох дузина теми тук и не мога да разбера какво правя грешно.

Имам ObservableCollection, мога да добавя нови служители, но потребителският интерфейс не показва промените веднага. Ако спра и рестартирам, промените се показват.

public class MainViewModel : ObservableObject
  {
    DataAccess.EmployeeRepository repository = new DataAccess.EmployeeRepository();
private ObservableCollection<Employee> employees;

public MainViewModel()
{
  employees = new ObservableCollection<Employee>(repository.GetEmployees());
}


public ObservableCollection<Employee> Employees
{
  get { return employees; }
  set
  {
    employees = value;
    OnPropertyChanged("Employees");
  }
}

Моят XAML има следното обвързване:

<ListView Name="ListViewEmployeeDetails" Grid.Row="1" Margin="4,109,12,23"  ItemsSource="{Binding Employees}" SelectedItem="{Binding CurrentEmployee}"  >
            <ListView.View>
                <GridView x:Name="grdTest">
                    <GridViewColumn Header="ID" DisplayMemberBinding="{Binding EmployeeID}"  Width="100"/>
                    <GridViewColumn Header="Name" DisplayMemberBinding="{Binding EmployeeName}"  Width="100" />
                    <GridViewColumn Header="Phone" DisplayMemberBinding="{Binding EmployeePhone}" Width="100" />
                </GridView>
            </ListView.View>
        </ListView>

Не мога да разбера какво не е наред. Всяка помощ е много ценена!


person user3207555    schedule 17.01.2014    source източник


Отговори (1)


public MainViewModel()
{
  Employees = new ObservableCollection<Employee>(repository.GetEmployees());
}

Трябва да зададете Employees, тъй като задействате събитието NotifyPropertyChanged на неговия сетер.

person AD.Net    schedule 17.01.2014
comment
Благодаря, но това не проработи. Listview все още не се опреснява. - person user3207555; 17.01.2014
comment
Добавях към хранилището, но не и ObservableCollection. Можете ли да ми кажете дали следният подход е приемлив: Employee e = new Employee(); e.EmployeeName = Нов служител; e.DepartmentID = 1; repository.AddEmployee(e); Служители. Добавяне (e); - person user3207555; 17.01.2014
comment
Зададохте ли DataContext в кода зад файла? И да, ще трябва по някакъв начин да попълните observablecollection. - person AD.Net; 17.01.2014
comment
Да, направих го. Не искам да добавям към хранилището И ObservableCollection. Изглежда, че трябва да добавя само към едното или към другото. - person user3207555; 17.01.2014