0

stackoverflow と MSDN で長い間検索してきましたが、マークされた回答が他の人には機能するのに、私には機能しない理由がわかりません。

私はこのような市のクラスを持っています

public class City
{
    public int Id { get; set; }
    public string Name { get; set; }

    public static List<City> GetDefaultCities()
    {
        List<City> cities = new List<City>();
        cities.Add(new City { Id = 1, Name = "New York" });
        cities.Add(new City { Id = 2, Name = "Chicago" });
        cities.Add(new City { Id = 3, Name = "Miami" });
        cities.Add(new City { Id = 4, Name = "Houston" });
        cities.Add(new City { Id = 5, Name = "Dallas" });

        return cities;
    }
}

私のViewModelのプロパティ:

private List<City> cities;
    public List<City> Cities
    {
        get { return City.GetDefaultCities(); }
        set { cities = value; }
    }

    private City selectedCity;
    public City SelectedCity
    {
        get { return selectedCity; }
        set
        {
            if (selectedCity != value)
            {
                selectedCity = value;
                RaisePropertyChanged("SelectedCity");
            }
        }
    }

私のビューの XAML

<ComboBox ItemsSource="{Binding Cities}" Width="100" Height="30"
              DisplayMemberPath="Name"
              SelectedValuePath="Id"
              SelectedItem="{Binding SelectedCity}"
              />

私は 3 つの解決策を試しました。 1. XAML で SelectedIndex を 0 に設定します。2. Text プロパティを XAML の Cities Name の最初の要素として設定します。3. ViewModel の City プロパティにデフォルト値を設定します。

しかし、それらすべてが機能するわけではなく、最初の要素は常に空です。誰でも助けることができますか?

4

1 に答える 1

0

コンストラクター内で都市のリストを作成し、selectedCity にリストの最初の値を割り当てる必要があります。

public CityListViewModel()
{
    cities = City.GetDefaultCities();
    selectedCity = cities[0];
}

そして、Cities プロパティ ゲッターで既に入力されている都市のリストを返すだけです。

public List<City> Cities
{
   get { return cities; }
   set { cities = value; }
}
于 2013-08-29T04:20:11.550 に答える