2015-10-06 58 views
1

我已經在這裏看過類似的問題,但找不到適合我的錯誤(工作)的問題。我的代碼是:錯誤:在使用ListSource中的ItemsSource之前,項目集合必須是空的

public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    public List<item> loadedCategory = new List<item>(); 

    private void Open_Click(object sender, RoutedEventArgs e) 
    { 
     OpenFileDialog openFileDialog = new OpenFileDialog(); 
     if (openFileDialog.ShowDialog() == true) 
     { 
      List<item> loadedCategory = loaders.category_loader(openFileDialog.FileName); 
     } 

     left_panel_lower_list.ItemsSource = loadedCategory; 
    } 

item對象只是一個擁有4個屬性的DTO。 loaders.category_loader返回itemlist。該錯誤標記在ItemSource分配行的末尾。我已經嘗試將代碼行移到代碼中的大部分其他位置,並且它永遠不會運行。
我在做什麼錯?

回答

1

,我會怎麼做。無論如何,你應該準備一個視圖模型並使用綁定。

0

上面的代碼有一個範圍錯誤,因爲您正在重新定義一個局部變量,其名稱與您的類中的字段具有相同的名稱。實際上,您正在獲取數據,然後通過添加顯示爲空的字段來忽略該數據,這是我認爲的問題。

private ObservableCollection<item> loadedCategory = new ObservableCollection<item>(); 

public MainWindow() 
{ 
    InitializeComponent(); 
    left_panel_lower_list.ItemsSource = loadedCategory; 
} 

private void Open_Click(object sender, RoutedEventArgs e) 
{ 
    OpenFileDialog openFileDialog = new OpenFileDialog(); 
    if (openFileDialog.ShowDialog() == true) 
    { 
     foreach(var item in loaders.category_loader(openFileDialog.FileName) 
     { 
      loadedCategory.Add(item); 
     } 
    }   
} 

...只要根據你的代碼:

0

您應該仔細瞭解錯誤信息的含義。

Error: Items collection must be empty before using ItemsSource in Listbox

這意味着您的ListBox必須包含任何項目,然後才能將Items分配給ItemsSource。

步驟以重現此問題:

  1. 使用組合框和XAML代碼中直接添加一些項目給它。
  2. 然後在代碼隱藏設置它是itemssource屬性。
  3. 你會得到這個例外。

如何避免這個錯誤:

使用或者項目集合或ItemsSource時,但不能同時。

相關問題