根据同一行中的另一个组合框列过滤数据网格中的组合框

时间:2013-09-12 14:09:15

标签: c# wpf mvvm

我是wpf的新手,我想知道如何在数据网格中实现2个组合框列,其中第一个组合框包含国家/地区,另一个包含城市,因此在数据网格城市上进行编辑时,colunmn组合框由所选国家/地区过滤使用MVVM模式的国家组合框

由于

1 个答案:

答案 0 :(得分:1)

当然这是可能的,最简单的方法是让你的ViewModel进行过滤:

public class Data:ModelBase
{
    public ObservableCollection<string> Countries { get; set; }
    private List<City> _allCities = new List<City>();

    public IEnumerable<City> Cities
    {
        get
        {
            if (_selectedCountry == null)
                return _allCities;

            return _allCities.Where(c => c.Country == _selectedCountry);
        }

    }

    public Data()
    {
        Countries = new ObservableCollection<string>();
        //Fill _allCities and Countries here
    }

    private string _selectedCountry;
    public string SelectedCountry
    {
        get
        {
            return _selectedCountry;
        }
        set
        {
            if (_selectedCountry != value)
            {
                _selectedCountry = value;
                OnPropertyChanged("SelectedCountry");
                OnPropertyChanged("Cities");
            }
        }
    }
}

public class City
{
    public string Country { get; set; }
    public string Name { get; set; }
}

现在,您将DataGrid绑定到Data类的集合。您的Country-ComboBoy的ItemsSource绑定到Country,您的Cities-ComboBoy绑定到Cities,您的Country-CB的SelectedItem绑定到您的SelectedCountry(Mode = TwoWay)。