假设我有一个班级address
:
public partial class Address
{
public int Id { get; set; }
public Nullable<int> CountryId { get; set; }
public Nullable<int> CityId { get; set; }
public string Details { get; set; }
public Nullable<bool> IsDefault { get; set; }
public Nullable<int> PersonId { get; set; }
}
每行需要 Cities 组合框的不同值。例如,一排需要“巴黎,马赛”,第二排需要“阿布扎比,迪拜,沙迦”,第三排需要“伦敦,诺丁汉”。
如何在网格中使用带有组合框的转换器,根据网格内另一个组合框中的选定国家/地区显示该组合框中的城市并显示CityName 我有一个城市类数组,其中包含转换器中的名称属性?
我需要知道语法。如何使用countryID将其传递给转换器以获取城市列表并将其绑定到数据网格中的CityCombobox,以及更改国家/地区此列表是否根据所选国家/地区更新?
答案 0 :(得分:0)
创建另一个表示Country和City集合的属性。
public partial class Address
{
public int Id { get; set; }
public ObservableCollection<Country> Countries{get;set;}
public Nullable<int> CountryId { get; set; }
public ObservableCollection<City> Cities{get;set;}
public Nullable<int> CityId { get; set; }
public string Details { get; set; }
public Nullable<bool> IsDefault { get; set; }
public Nullable<int> PersonId { get; set; }
}
现在你有两个代表国家和城市的集合。
<DataTemplate>
<ComboBox ItemsSource="{Binding Countries}" SelectedItem = "{Binding CountryId}" />
</DataTemplate>
将所有控件放在此处。 Countries表示整个集合,而selectedItem表示单个项目。
您可以使用INotifyProperty为您的CountryId实施propertychanged通知,以便您可以相应地填充城市。
编辑
您需要拥有一个Address集合并将该集合传递给Grid的ItemsSource。
ObservableCollection<Address> = new ObservableCollection<Address>();
//Load Addresses for each entity
//and show it as ItemsSource of the Grid.
单行将代表单个Address对象。
答案 1 :(得分:0)
使用两组数据创建一个viewmodel,即:
class Country_CityViewModel
{
public CountriesListModel { get; set; }
public CitiesListModel { get; set; }
public Country-CityViewModel()
{
CountriestListModel = new CountriestListModel ;
CitiesListModel = new CitiesListModel ();
}
}
通过绑定或代码隐藏来分配viewmodel。
假设您已将数据分配给页面并为页面提供x:CountryDetailsPage的名称:
<ComboBox x:name:"CountryDetails"
DataContext="{Binding DataContext, ElementName=CountryDetailsPage}"
ItemsSource="{Binding CountriesListModel.Countries}"
DisplayMemberPath="Country"
SelectedValue="{Binding Country.id, , Mode=TwoWay}"
SelectedValuePath="id" />
<ComboBox DataContext="{Binding DataContext, ElementName=CountryDetails}"
ItemsSource="{Binding SelectedItem Source=CountryDetails}"
DisplayMemberPath="City"
SelectedValue="{Binding CitiesListModel.id, Mode=TwoWay}"
SelectedValuePath="CountriesListModel.id" />
这让我抬起头来......但试试这个逻辑。我认为它会奏效。