2014-01-17 141 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。 –