カスタム GetEnumerator() 関数を定義するクラスがあります (IEnumerable<> を実装することにより)。私はそれを使用してObservableCollection<LogEvent>
、すべての TestStep にある複数の連続した方法で繰り返します。ObservableCollection<TestStep>
必要なすべてのデータを含むプライベートがあります。
このクラスのインスタンスを ListBox の ItemsSource として使用したいと考えています。ObservableCollection<LogEvent>
ただし、基になる data( ) が更新されても、ListBox は更新されません。そのクラスのサンプルを次に示します。
public class FlatLogViewModel : IEnumerable<LogEvent>
{
public FlatLogViewModel(ObservableCollection<TestStep> subSteps)
{
m_subSteps = subSteps;
}
public IEnumerator<LogEvent> GetEnumerator()
{
foreach (TestStep step in SubSteps)
{
// step.LogEvents is an ObservableCollection<LogEvent>
foreach (LogEvent logEvent in step.LogEvents)
yield return logEvent;
}
IEnumerator IEnumerable.GetEnumerator()
{
return this.GetEnumerator();
}
private ObservableCollection<TestStep> m_subSteps;
}
ここで INotifyCollectionChanged を実装する必要があるかどうか、または実装できるかどうかはわかりません。ObservableCollection が変更されたかどうかを知るにはどうすればよいですか?
私の質問は次のとおりです: ListBox に LogEvents (タイプObservableCollection<LogEvent>
) で発生した変更を表示するにはどうすればよいですか?