碼結果我在我的Windows Phone 8.1應用的兩個組合框:綁定組合框在System.ArgumentOutOfRangeException
- 一個用於公司(ComboBoxCompany)
- 一個用於公司的員工(ComboBoxEmployees)
假設他們的XAML是這樣的。
<ComboBox Name="ComboBoxEmployees"
SelectionChanged="ComboBoxEmployees_SelectionChanged">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Id}"/>
<TextBlock Text="{Binding Person_Name}"/>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<ComboBox Name="ComboBoxCompany"
SelectionChanged="ComboBoxCompany_SelectionChanged">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Company_Name}"/>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
每當我改變公司ComboBoxCompany,它刷新ComboBox1列表,分配和顯示員工的新列表。
private void ComboBoxCompany_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
//whenever I select the company name, it must change the employees list on the ComboBoxEmployees
//let's save it into an ObservableCollection
ObservableCollection <Employee> employees = new ObservableCollection<Employee>();
//...fill employees with data...
ComboBoxEmployees.ItemsSource = employees; //<-- Debugger breaks right here.
}
但分配新ItemsSource
時,調試器打破。 我搜索了一下,似乎我不得不實施INotifyPropertyChanged
到Employee
類,這是我爲每個字段所做的,但沒有解決。 拋出的異常是System.ArgumentOutOfRangeException
。
如果我抓住它,並顯示在控制檯,調試器不會停止和ComboBoxEmployees充滿了數據誤差和隨機誤差:有時候員工不匹配,或者乾脆放棄null
指針。
這不是第一次在運行時綁定:在啓動應用程序時,ComboBoxCompany充滿公司,而ComboBoxEmployees充滿第一家公司的員工:它發生在另一個方法中,但使用的指令是相同的:
public MainPage() {
InitializeComponent();
SetPage();
}
private void SetPage(){
//getting companies data from DB...
ComboBoxCompany.ItemsSource = companies;
//lambda expression to get the Employees of a Company
ComboBoxEmployees.ItemsSource = employees
}
這正常工作一次初始化。 我真的不知道如何繼續。你能給我一個提示嗎?
我很確定問題出現在您標記的行之前的行中。您是否使用任何索引器,例如'員工[0]'? –
我應該在哪裏使用它?綁定之前? –
我不想說你應該使用它。我只是想知道你是否使用了類似的東西。例外意味着你想要訪問一個不存在的數組或集合的索引 –