C# Xamarin.forms-3个具有3种不同更改方法的选择器会被混淆

C# Xamarin.forms-3个具有3种不同更改方法的选择器会被混淆,c#,xamarin.forms,C#,Xamarin.forms,我有三个选择者: <Picker x:Name="CommunityPicker" Title="Select Community" WidthRequest="400" ItemDisplayBinding="{Binding Description}" SelectedIndexChanged="communityChange" /> <Picker x:Name="LotPicker" Title="Select Lot" WidthRequest="400" ItemD

我有三个选择者:

<Picker x:Name="CommunityPicker" Title="Select Community" WidthRequest="400" ItemDisplayBinding="{Binding Description}" SelectedIndexChanged="communityChange" />
<Picker x:Name="LotPicker" Title="Select Lot" WidthRequest="400" ItemDisplayBinding="{Binding Lot}" SelectedIndexChanged="lotChange" />
<Picker x:Name="ModelPicker" Title="Select Model" WidthRequest="400" ItemDisplayBinding="{Binding Description}" SelectedIndexChanged="modelChange" />
当我第一次使用选择器时,一切正常,但当我选择另一个选项时,我得到以下错误:

对象引用未设置为对象的实例

在我获取所选值的行上…由于某种原因,我在错误的方法上获取此错误…即当我要更改CommunityPicker的值时,我获取LotPicker的方法


我做错了什么?

我不知道你应用程序的其他代码。但我通过一个简单的演示重现了这个问题。你可以检查一下

我通过确定值是否为null来解决这个问题,然后相应地处理它,您可以参考它:

 private void RegionPicker_SelectedIndexChanged(object sender, EventArgs e)
    {
        Region region =  ((sender as Picker).SelectedItem as Region);

        if (region != null)
        {
            StreetPicker.ItemsSource = region.Streets;
        }
        else {
            StreetPicker.ItemsSource = null;
        }
    }
因此,您可以尝试这样做(其他选择器也是如此):

希望它能帮助你

 private void RegionPicker_SelectedIndexChanged(object sender, EventArgs e)
    {
        Region region =  ((sender as Picker).SelectedItem as Region);

        if (region != null)
        {
            StreetPicker.ItemsSource = region.Streets;
        }
        else {
            StreetPicker.ItemsSource = null;
        }
    }
LotClass temp = (sender as Picker).SelectedItem as LotClass);

if(temp!=null){

}else{

}