WPFでのデータバインディングのモデルに問題が発生しました。私は、オブジェクトのコレクション(変数)を持っているオブジェクトを持っていて、それぞれはさらにオブジェクト(VariableCode)の別のコレクションを持っています。複数のコレクションを1つのコレクションとして公開する
私ができる必要があるのは、各メンバオブジェクトが条件を満たしている最下位レベルのコレクション(VariableCode)の融合である最高レベルのオブジェクトから単一のコレクションを何らかの形で公開することです。そのコレクションをListBoxにバインドするには、1つ以上の変数に属するVariableCodeが表示されるはずです。私が本当にしたいのですがどのような
public class CrossTab
{
public VariableList Variables{get; set;}
}
public class Variable
{
public VariableCodeList VariableCodes{get; set;}
}
public class VariableCode
{
public bool IsShown{get; set;}
}
がすべて含まれているVariableCodes上のビューがあるクロスタブ(好ましくのObservableCollection < VariableCode>)のプロパティを公開します:
だからコードは次のようになります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;
考えられますか?そんなことは可能ですか?
うまくコンテキストに入れます。 –