C# 按代码绑定ComboBox会导致System.ArgumentOutOfRangeException
我的Windows Phone 8.1应用程序中有两个组合框:C# 按代码绑定ComboBox会导致System.ArgumentOutOfRangeException,c#,wpf,xaml,combobox,windows-phone-8.1,C#,Wpf,Xaml,Combobox,Windows Phone 8.1,我的Windows Phone 8.1应用程序中有两个组合框: 一家公司(ComboBoxCompany) 一份给公司员工(员工) 假设他们的XAML是这样的 <ComboBox Name="ComboBoxEmployees" SelectionChanged="ComboBoxEmployees_SelectionChanged"> <ComboBox.ItemTemplate> <DataTemplate>
- 一家公司(ComboBoxCompany)
- 一份给公司员工(员工)
<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>
第一次初始化工作正常。
我真的不知道该怎么做。你能给我一个提示吗?我已经通过插入
ComboBoxEmployees.SelectionChanged-=ComboBoxEmployees_SelectionChanged;
ComboBoxEmployees.ItemsSource = null;
在进行任何操作或绑定之前。ComboBoxEmployees似乎正在使用
ComboxEmployees.SelectionChanged
事件处理程序侦听更改。另外,我在索引和指针方面也犯了错误。我很确定问题出在您标记的行之前。您是否使用任何索引器,例如员工[0]
?我应该在哪里使用它?在装订之前?我不想说你应该用它。我只是想知道你是不是用那种东西。例外情况意味着,您想要访问不存在的数组或集合的索引。很抱歉,英文措辞不好。实际上,在调试时,员工列表是正确的,如监视窗口中所示-只是绑定使所有内容崩溃。在我编写的这些函数中,我从不使用get或ElementAt,只使用绑定。
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
}
ComboBoxEmployees.SelectionChanged-=ComboBoxEmployees_SelectionChanged;
ComboBoxEmployees.ItemsSource = null;