0

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

谢谢

4

1 回答 1

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 绑定到您的数据类的集合。Country-ComboBoy 的 ItemsSource 绑定到 Country,Cities-ComboBoy 的 ItemsSource 绑定到 Cities, Country-CB 的 SelectedItem 绑定到 SelectedCountry(模式=TwoWay)。

于 2013-09-12T14:29:31.450 回答