C# MVVM Caliburn.micro ComboBox Country City不';我不能正常工作

C# MVVM Caliburn.micro ComboBox Country City不';我不能正常工作,c#,wpf,mvvm,combobox,caliburn.micro,C#,Wpf,Mvvm,Combobox,Caliburn.micro,我在Caliburn.Micro上使用MVVM,我遇到了一个问题。 所以我有两个组合框在视图中。第一个是代表国家名单,第二个是代表城市名单。我希望在第一个列表中的国家发生变化时,城市列表会随之更新,并提供相应的城市列表。我的问题是城市列表没有更新。 这是我的密码: public class MyViewModel : PropertyChangedBase { Company company = new Company(); List<string> countrie

我在Caliburn.Micro上使用MVVM,我遇到了一个问题。 所以我有两个组合框在视图中。第一个是代表国家名单,第二个是代表城市名单。我希望在第一个列表中的国家发生变化时,城市列表会随之更新,并提供相应的城市列表。我的问题是城市列表没有更新。 这是我的密码:

public class MyViewModel : PropertyChangedBase
{
    Company company = new Company();
    List<string> countries = new List<string> {"USA","Germany" };
    public string Name
    {
        get { return company.name; }
        set { company.name = value;
        }
    }
    public List<string> Countries
    {
        get { return countries; }
        set {
            company.country = ToString();
            NotifyOfPropertyChange(() => Countries);
            NotifyOfPropertyChange(() => Cities);
        }
    }
    public List<string> Cities
    {
        get {
            switch (company.country)
            {
                case "USA": return new List<string> { "New York", "Los Angeles" };  
                case "Germany": return new List<string> { "Hamburg", "Berlin" };
                default: return new List<string> { "DEFAULT", "DEFAULT" };

            }
            }
        set { company.city = value.ToString();
            NotifyOfPropertyChange(() => Cities);
        }
    }

}
公共类MyViewModel:PropertyChangedBase
{
公司=新公司();
名单国家=新名单{“美国”、“德国”};
公共字符串名
{
获取{return company.name;}
设置{company.name=value;
}
}
公开名单国家
{
获取{返回国家;}
设置{
company.country=ToString();
财产变更通知(()=>国家);
财产变更通知(()=>城市);
}
}
公开名单城市
{
得到{
交换机(公司、国家)
{
案例“美国”:返回新名单{“纽约”、“洛杉矶”};
“德国”案:返回新名单{“汉堡”、“柏林”};
默认:返回新列表{“默认”,“默认”};
}
}
设置{company.city=value.ToString();
财产变更通知(()=>城市);
}
}
}
现在,城市列表仍保留默认成员(默认,默认)。该视图仅包含两个具有相应名称的组合框:

<Grid>
        <ComboBox x:Name="Countries" />
        <ComboBox x:Name="Cities" />
</Grid>

有什么建议吗?
抱歉,我的英语不好。

将国家/地区的
SelectedItem
属性
组合框
绑定到视图模型的源属性:

<ComboBox x:Name="Countries" ItemsSource="{Binding Countries}" SelectedItem="{Binding SelectedCountry}" />
<ComboBox x:Name="Cities" ItemsSource="{Binding Cities}" />

有关如何实现这种级联式组合框的完整示例和更多信息,请参阅以下博文:

将国家的
SelectedItem
属性绑定到视图模型的源属性:

<ComboBox x:Name="Countries" ItemsSource="{Binding Countries}" SelectedItem="{Binding SelectedCountry}" />
<ComboBox x:Name="Cities" ItemsSource="{Binding Cities}" />
有关如何实现此类级联组合框的完整示例和更多信息,请参阅以下博客文章: