C# 设置ItemSource ComboBox属性时出现NullReferenceException

C# 设置ItemSource ComboBox属性时出现NullReferenceException,c#,wpf,combobox,nullreferenceexception,itemssource,C#,Wpf,Combobox,Nullreferenceexception,Itemssource,可能重复: 我有两个ComboBox,一个是公司,另一个是地区(意味着每个公司都有一组地区),我想根据ComboBox公司设置的公司更改ComboBox地区的ItemSource 我有两个类,代表公司和地区,还有一个region类的方法,返回已确定公司的地区列表(作为参数传递) 当ComboBox\u Company selected项发生更改时,我还触发了一个事件Tregger,该事件应重新加载ComboBox\u区域源。见下文 private void ComboBox_Company_S

可能重复:

我有两个ComboBox,一个是公司,另一个是地区(意味着每个公司都有一组地区),我想根据ComboBox公司设置的公司更改ComboBox地区的ItemSource

我有两个类,代表公司和地区,还有一个region类的方法,返回已确定公司的地区列表(作为参数传递)

当ComboBox\u Company selected项发生更改时,我还触发了一个事件Tregger,该事件应重新加载ComboBox\u区域源。见下文

private void ComboBox_Company_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
   Company selected_company= (Company)ComboBox_Company.SelectedValue;
   Dictionary<int, string> regions = Region.GetLookupListByCompanyID(null, selected_company.ID, false);
   ComboBox_Region.ItemsSource = regions.Values;
}
private void组合框\u Company\u SelectionChanged(对象发送者,SelectionChangedEventArgs e)
{
所选公司\u Company=(公司)组合框\u Company.SelectedValue;
Dictionary regions=Region.GetLookupListByCompanyID(null,selected_company.ID,false);
ComboBox_Region.ItemsSource=regions.Values;
}
然而,我得到了一个NullReferenceException错误,我不知道如何解决它

下面是XAML代码:

<TextBlock Grid.Row="0" Grid.Column="0" Text="{x:Static props:ResourcesWPF.Company}" />
<ComboBox Name="ComboBox_Company" Grid.Row="0" Grid.Column="1" DisplayMemberPath="Name" SelectedItem="ID" Initialized="ComboBox_Company_Initialized"  SelectionChanged="ComboBox_Company_SelectionChanged" />

<TextBlock Grid.Row="1" Grid.Column="0" Text="{x:Static props:ResourcesWPF.Region}" />
<ComboBox Name="ComboBox_Region" Grid.Row="1" Grid.Column="1" DisplayMemberPath="Name" SelectedItem="ID" Initialized="ComboBox_Region_Initialized" SelectionChanged="ComboBox_Region_SelectionChanged" />

以下变量之一为空

ComboBox_Company
Region
selected_company
selected_company.ID
ComboBox_Region
regions
而且,您传递给它的方法可能不需要
null
符号


您可以使用调试器并查看。抛出异常时,调试器通常会自动启动。在屏幕底部,有两个小选项卡<代码>本地人和
监视
。您可以使用这些来查看变量中的值,并查看其中一个是否为null。

您得到该异常是因为它是真的。。。您正在访问的内容为空。很可能,它被选中为公司ID

以下是解决您的问题的一些帮助:

每次组合框的SelectedValue发生更改时,您的事件都会多次触发。这包括SelectedValue从旧值变为[空](在变为新值之前)的时间。解决这个问题的一种方法是检查逻辑是否仅在设置新值时才运行。将您的逻辑围绕一个if:

if (e.AddedItems.Count > 0)
{
    //your logic
}

尽管如此,实现您所说内容的更好方法是不使用SelectionChanged事件侦听器,而是利用WPF的{Binding}引擎。将第二个组合框的ItemsSource绑定到第一个组合框的SelectedItem的属性。

几乎所有NullReferenceException的情况都是相同的。请参阅“”以获取一些提示。调试:检查所选公司或地区是否与
Null
@MBen:no,它们不是Null。我将通过其他链接查看它。谢谢如果你能指出NRE正在进行的那一行,那将非常有帮助。@GuillermeCampos请给我看一下它的xaml