2013-06-27 102 views
-1

美好的一天,WPF列表框不刷新

我有一个WPF MVVM应用程序,允许用户将项目拖入列表框。这项工作第一次成功。但是,如果需要,我需要能够将更多项目拖到列表框中。

 <!-- XAML FileSelectionView.xaml --> 
     <ListBox x:Name="listboxFileGroups" 
       ItemsSource="{Binding ImportGroups, Mode=TwoWay}" 
       SelectedItem="{Binding Path=SelectedValue, 
             Mode=TwoWay}" 
       Style="{StaticResource myListboxStyle}" 
       helper:FocusExtension.IsFocused="{Binding IsImportGroupsFocused}" 
       telerik:RadDragAndDropManager.AllowDrop="True" 
       telerik:RadDragAndDropManager.DropInfo="OnDropInfo" 
       telerik:RadDragAndDropManager.DropQuery="OnDropQuery" /> 

这里是我的视图模型(FileSelectionViewModel.cs)的有关代码不执行INotifyPropertyChanged:

// This is the data source of the top listbox 
    private ObservableCollection<string> importGroups; 
    public ObservableCollection<string> ImportGroups 
    { 
     get 
     { 
      System.Diagnostics.Debug.WriteLine("Retrieving Top Level Import Groups..."); 
      importGroups = fileImportProcess.ImportGroups; 
      return importGroups; 
     } 

     set 
     { 
      importGroups = value; 
      fileImportProcess.ImportGroups = importGroups; 
      System.Diagnostics.Debug.WriteLine("Initializing Top Level Import Groups..."); 
      OnPropertyChanged("ImportGroups"); 
     } 
    } 

FileSelectionViewModel.cs然后采取这些变化,并将它们propogates成一类称为FileImportProcess.cs (这也实现INotifyPropertyChanged),它看起来像:

// This is the data source for FileSelection 
    private ObservableCollection<string> importGroups; 
    public ObservableCollection<string> ImportGroups 
    { 
     get 
     { 
      System.Diagnostics.Debug.WriteLine("Retrieving Lower Level Import Groups"); 
      return parsedFiles.Keys.ToList().ToObservableCollection<string>(); 
     } 
     set 
     { 
      importGroups = value; 
      System.Diagnostics.Debug.WriteLine("Initializing Lower Level Import Groups"); 
      foreach (var item in importGroups) 
      { 
       System.Diagnostics.Debug.WriteLine("==> " + item.ToString()); 
      } 
      OnPropertyChanged("ImportGroups"); 
     } 
    } 

的问题我有是我第一次拖三个文件放入列表框中,全部工作正常。当我尝试将更多文件拖入列表框时,FileImportProcess.cs类将确认我选择的额外文件,但不会将事件传播回FileSelectionViewModel.cs。这里是我的示例输出:

Initializing Lower Level Import Groups 
==> Import Group 1 
==> Import Group 2 
==> Import Group 3 

Retrieving Top Level Import Groups... 
Retrieving Lower Level Import Groups 
Retrieving Top Level Import Groups... 
Retrieving Lower Level Import Groups 
Retrieving Top Level Import Groups... 
Retrieving Lower Level Import Groups 

0 - C:\Dropbox\Dropbox-Logs\NSN_2013_02_20_eNodeB_Funktion_Load_M8000-10.csv 
1 - C:\Dropbox\Dropbox-Logs\NSN_2013_02_20_ENODEB_FUNKTION_LOAD_M8018-22.csv 
2 - C:\Dropbox\Dropbox-Logs\NSN_2013_02_20_ENB_Transport_Load_M8004-11.csv 
3 - C:\Dropbox\Dropbox-Logs\NSN_2013_02_20_EUTRAN_RELATION_HO_M8015-20.csv 
4 - C:\Dropbox\Dropbox-Logs\NSN_2013_02_20_EUTRANCELL_BEARER_M8007-13.csv 
5 - C:\Dropbox\Dropbox-Logs\NSN_2013_02_20_EUTRANCELL_ENB_HO_M8009-15.csv 
6 - C:\Dropbox\Dropbox-Logs\NSN_2013_02_20_EUTRANCELL_HO_M8021-24.csv 

Initializing Lower Level Import Groups 
==> Import Group 1 
==> Import Group 2 
==> Import Group 3 
==> Import Group 4 
==> Import Group 5 
==> Import Group 6 
==> Import Group 7 

正如你所看到的,我第一次将文件拖动,视图模型检索ImportGroups。第二次拖动附加文件时,我收到输入文件,但列表框未正确更新。

编辑***我没有看到在输出窗口以任何形式表明什么是错的数据绑定***

任何想法?

TIA,

COSON

回答

0

尝试ItemsSource="{Binding ImportGroups, Mode=OneWay,UpdateSourceTrigger=PropertyChanged}"

+0

这没有奏效。 – coson