2017-08-06 67 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