2017-08-06 101 views
-1

我有兩個comboxboxes,一個有省份列表,另一個應該填滿城市對應的選定省份。 我的問題是,當我改變了省,城市combox永遠不會填補。WPF綁定Comobox到另一個

XML文件:

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

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

代碼:

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

我已經改變了第一組合框的ItemsSourceStaticResourceBinding,改變了場Provinces的財產和所有的工作就像預期。

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

它現在的作品,即使我不知道它在哪裏是第一個問題。我還有一個問題,我的源代碼被定義爲應用程序資源中的數組,我怎樣才能將這兩個組合框鏈接起來? –

+0

您可能會忘記包含'INo​​tifyPropertyChanged'。 –

+1

我會加載窗口/ usercontrol初始化後的來源 – Ben