Я столкнулся с проблемой с моей моделью привязки данных в WPF. У меня есть объект, который имеет коллекцию объектов (Variable), и у каждого в свою очередь есть еще одна коллекция объектов (VariableCode).
Что мне нужно сделать, так это каким-то образом представить единственную коллекцию из объекта самого высокого уровня, которая представляет собой объединение коллекций самого низкого уровня (VariableCode), где каждый объект-член удовлетворяет условию. Так что я могу связать эту коллекцию с ListBox, который должен отображать VariableCodes, которые принадлежат 1 или более переменным.
Итак, код выглядит примерно так:
public class CrossTab
{
public VariableList Variables{get; set;}
}
public class Variable
{
public VariableCodeList VariableCodes{get; set;}
}
public class VariableCode
{
public bool IsShown{get; set;}
}
Что я действительно хотел бы сделать, так это выставить свойство в CrossTab (предпочтительно ObservableCollection ), которое представляет собой представление всех содержащихся переменных переменных, где IsShown == true. В настоящее время они представляют собой отдельные коллекции, каждая из которых содержится в собственном объекте Variable.
public class CrossTab
{
public ObservableCollection<VariableCode> ShownCodes
{
get
{
//This is where I could picture some brute force looping
// and building of a new collection - but that's not really
// what I'm after. What I want is a live view on the data
// that's in there
}
}
}
Код грубой силы, с которым я играл, возвращает правильные данные - только не в режиме реального времени, а в виде статической коллекции.
ObservableCollection<VariableCode> output = new ...();
Variables.ForEach(v =>
v.VariableCodes.Where(vc => vc.IsShown)
.ForEach(vc => output.Add(vc))
);
return output;
Мысли? Возможна ли такая вещь?