J'ai rencontré un problème avec mon modèle pour la liaison de données dans WPF. J'ai un objet qui a une collection d'objets (Variable), et chacun a à son tour une autre collection d'objets (VariableCode). Ce que je dois pouvoir faire est en quelque sorte d'exposer une seule collection à partir de l'objet de plus haut niveau - qui est une fusion des collections de niveau les plus bas (VariableCode) où chaque objet membre remplit une condition. Alors que je peux lier cette collection à un ListBox, qui devrait afficher VariableCodes qui appartiennent à 1 ou plusieurs variables.Expose plusieurs collections en tant que collection unique
Ainsi, le code ressemble à ceci:
public class CrossTab
{
public VariableList Variables{get; set;}
}
public class Variable
{
public VariableCodeList VariableCodes{get; set;}
}
public class VariableCode
{
public bool IsShown{get; set;}
}
Ce que je voudrais vraiment faire est d'exposer une propriété sur CrossTab (de préférence un ObservableCollection < VariableCode>) qui est une vue sur tout le contenu VariableCodes où IsShown == vrai. Actuellement, il s'agit de collections distinctes, chacune étant contenue dans leur propre objet 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
}
}
}
Le code de la force brute que je caressait qui retourne les données correctes - pas aussi une vue en direct, mais plutôt comme une collection statique.
ObservableCollection<VariableCode> output = new ...();
Variables.ForEach(v =>
v.VariableCodes.Where(vc => vc.IsShown)
.ForEach(vc => output.Add(vc))
);
return output;
Pensées? Une telle chose est possible?
Bien mis en contexte. –