2014-01-17 88 views
0

我在这里读了十几个主题,我无法弄清楚我做错了什么。Observable Collection不更新用户界面

我有一个ObservableCollection,我可以添加新的Employees,但UI不会立即显示更改。如果我停下来并重新启动,则会显示更改。

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> 

我无法弄清楚什么是错的。任何帮助是极大的赞赏!

回答

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

你必须设置Employees因为你射击了二传手的NotifyPropertyChanged事件。

+0

谢谢,但没有奏效。 Listview仍然不爽快。 – user3207555

+0

我正在添加到存储库,但没有添加ObservableCollection。 您能否告诉我,以下方法是否可以接受: 员工e =新员工(); e.EmployeeName =“新员工”; e.DepartmentID = 1; repository.AddEmployee(e);员工加入(e); – user3207555

+0

您是否在代码隐藏文件中设置了DataContext?是的,你需要以某种方式填充observablecollection。 –