2011-10-20 114 views
2

我有一個可觀察收集源的listview。我確信數據在代碼後面發生了變化,但我完全厭倦了UI爲什麼不顯示更改。我錯過了什麼?Listview在更新時不會更改

我的XAML:

<GridViewColumn Width="70" Header="Status"> 
    <GridViewColumn.CellTemplate> 
     <DataTemplate> 
      <!--<CheckBox IsChecked="{Binding Path=Status, Mode= Twoway}" HorizontalContentAlignment="Center" IsEnabled="False"/>--> 
      <TextBlock Text="{Binding Path=Status, Mode= Twoway}" TextAlignment="Center" Loaded="Page_Loaded"/> 
     </DataTemplate> 
    </GridViewColumn.CellTemplate> 
</GridViewColumn> 

我的類:

public partial class tblADRMaster: INotifyPropertyChanged 
{ 
    public string Status 
    { 
     get { return _status; } 
     set 
     { 
      if (_status != value) 
      { 
       _status = value; 
       OnPropertyChanged("Status"); 
      } 
     } 
    } 
} 

這是我的代碼背後:

ObservableCollection<tblADRMaster> list = new ObservableCollection<tblADRMaster>(); 
CurrentCase = FileMaintenanceBusiness.Instance.GetADRMasterInfobyKeywordRefresh(caseNo.CaseIDSystem, "CaseIDSystem"); 
foreach (var c in listFrWWC) 
{ 
    if (c.CaseIDSystem != CurrentCase.CaseIDSystem) 
     list.Add(c); 
    else 
     list.Add(CurrentCase); 

} 
foreach (var caseMaster in list) 
{ 
    caseMaster.IsMissingDocs = GetMissingDoc(caseMaster.tblADRDispositions); 
    caseMaster.IsProblemCase = !string.IsNullOrEmpty(caseMaster.ProblemNote) ? "Yes" : "No"; 
    caseMaster.Status = GetStatus(caseMaster); 
} 

lvAdrMaster.ItemsSource = list; 

我想改變現狀。它確實改變了因爲我放置了一個斷點並且STATUS從HOLD變爲ACTIVE,但是listview不會顯示變化。它仍然保持,除非我按回btn或重新加載項目。

我一整天都在排除故障,我似乎無法想象我可能錯過的任何其他事情。請告訴我。謝謝。

+0

顯示lvAdrMaster的XAMl。你應該公開列表作爲公共財產並綁定到它並使用比列表更好的名字。 – Paparazzi

回答

1

試試這個你正文塊結合:

Text="{Binding Path=Status, Mode= Twoway, UpdateSourceTrigger=PropertyChanged}" 
1

嘗試使用CollecitonViewSource

private ListCollectionView EmpCollectionView 
    { 
     get 
     { 
      return (ListCollectionView)CollectionViewSource.GetDefaultView(ListOfEmp); 
     } 
    } 


    private ObservableCollection<Employee> listOfEmp = new ObservableCollection<Employee>(); 
    public ObservableCollection<Employee> ListOfEmp 
    { 
     get { return listOfEmp; } 
     set { listOfEmp = value; } 
    } 

後-u更新集合剛剛刷新collectionViewSource 像

public void OnAdd(object sender) 
    { 
     ToggleButton tb = sender as ToggleButton; 

     EmpCollectionView.SortDescriptions.Clear(); 
     if (tb.IsChecked == true) 
     { 

      EmpCollectionView.SortDescriptions.Add(new SortDescription(tb.Content.ToString(), ListSortDirection.Ascending)); 
      EmpCollectionView.Refresh(); 
     } 
     else 
     { 
      EmpCollectionView.SortDescriptions.Add(new SortDescription(tb.Content.ToString(), ListSortDirection.Descending)); 
      EmpCollectionView.Refresh(); 
     } 
    } 
0

你有沒有在tblADRMaster類中實施了INotifyPropertyChanged接口併爲Status屬性提出了物業通知?