2017-08-06 8 views
-1

私は2つのコンボボックスを持っています.1つは州のリストを持ち、もう1つは選択された州に対応する都市でいっぱいになるはずです。 私が問題になったのは、私が州を変えたとき、都市のコンボックスは決して満たされないことです。WPF別のコモボックスにバインドする

XMLファイル:

<ComboBox x:Name="ProvincesCombo" ItemsSource="{StaticResource Provinces}" IsSynchronizedWithCurrentItem="true" > </ComboBox> 

<ComboBox x:Name="CitiesCombo" ItemsSource="{Binding SelectedItem.Cities, ElementName=ProvincesCombo}" IsSynchronizedWithCurrentItem="true"> 
</ComboBox> 

コード:私はBindingStaticResourceから最初のコンボボックスのItemsSourceを変更し、プロパティにフィールドProvincesを変更し、すべてが期待されるように働いてきた

ObservableCollection<Province> Provinces = new ObservableCollection<Province>(); 
Provinces.Add(new Province() { Name = "أدرار", Cities = new ObservableCollection<string>() { "تيط", "تيمقطن", "أقبلى", "أولف", "تبمياوين", "أوقروت", "أولاد السعيد", "تيميمون" } }); 
Provinces.Add(new Province() { Name = "الأغواط", Cities = new ObservableCollection<string>() { "الحاج المشري", "عين سيدي علي", "قلتة سيدي سعد", "الأغواط", "الخنق", "الحويطة" } }); 
DataContext = this; 

public class Province 
{ 
    public string Name { get; set; } 
    public ObservableCollection<string> Cities { get; set; } 
} 

答えて

0

XAML:

<ComboBox x:Name="ProvincesCombo" ItemsSource="{Binding Provinces}" IsSynchronizedWithCurrentItem="true" /> 
<ComboBox x:Name="CitiesCombo" ItemsSource="{Binding SelectedItem.Cities, ElementName=ProvincesCombo}" IsSynchronizedWithCurrentItem="true" /> 

は、コードビハインド:

public MainWindow() 
{ 
    InitializeComponent(); 
    DataContext = this; 
    Provinces.Add(new Province() { Name = "A", Cities = new ObservableCollection<string>() { "City A1", "City A2" } }); 
    Provinces.Add(new Province() { Name = "B", Cities = new ObservableCollection<string>() { "City B1", "City B2" } }); 
} 

public ObservableCollection<Province> Provinces { get; set; } = new ObservableCollection<Province>(); 

私もINotifyPropertyChangedインタフェースを実装しました。

+0

私はそれが問題の最初の場所であったかどうかわかりません。私は別の質問がある、私のソースは、アプリケーションリソースの配列として定義されている、どのように私は2つのコンボボックスをリンクすることができますか? –

+0

'INotifyPropertyChanged'をインクルードすることを忘れるかもしれません。 –

+1

ウィンドウ/ユーザーコントロールの初期化後にソースをロードします – Ben

関連する問題