C # wpf linq и наблюдаемый сборник: как использовать в качестве фильтра со списком - PullRequest
0 голосов
/ 11 июня 2011

На самом деле я не уверен, как задать вопрос, поэтому вот что я делаю:

У меня есть текст данных, который я использую через LINQ to SQL

linqDatabaseDataContext db = new linqDatabaseDataContext();

У меня естьполе со списком значений, которые я использую для заполнения настраиваемого списка, используя значение поля со списком в качестве фильтра, вызывая этот метод.я передаю строку из выпадающего списка в метод

private void PopulateList(string filter)
        {

            MessageBox.Show(filter);

            var holds =
                from a in db.Record_HoldDatas
                join techs in db.LUT_Employees on a.LabTech equals techs.ID
                join qaSups in db.LUT_Employees on a.QASupervisor equals qaSups.ID
                join prodSups in db.LUT_Employees on a.ProductionSupervisor equals prodSups.ID
                join flavors in db.LUT_Flavors on a.Flavor equals flavors.ID
                where a.HoldStatus == filter
                orderby a.HoldID descending
                select new
                {
                    a,
                    QASupervisor = qaSups.firstName + " " + qaSups.lastName,
                    ProdSupervisor = prodSups.firstName + " " + prodSups.lastName,
                    Tech = techs.firstName + " " + techs.lastName,
                    Headline = a.HoldID + " : " + a.Package + " " + flavors.flavor,
                    Flavor = flavors.flavor,
                    Status = a.HoldStatus
                };

            lbxHoldsList.ItemsSource = holds;
        }

Я хочу, чтобы это произошло при изменении выбранного элемента.Я знаю, что есть способ сделать это путем связывания наблюдаемой коллекции, но я не знаю, как это сделать, я довольно новый.Текст данных довольно специфичен для структуры, поэтому я использовал неявный тип.Кто-нибудь захочет подтолкнуть меня в правильном направлении?

1 Ответ

0 голосов
/ 11 июня 2011

Если вы используете MVVM:

Добавьте (n наблюдаемую) коллекцию фильтров в ViewModel, добавьте свойство к имени ViewModel SelectedFilter.Свяжите SelectedFilter со свойством SelectedItem поля со списком.

Добавьте обработчик в ViewModel, который вызывается при изменении SelectedFilter.В обработчике вызовите метод Populate.

...