private void LoadOnDemand(ObservableCollection codeModels) { if (m_XamTreeItemParent == null) { foreach (ArticleCodeModel artCodeModel in codeModels) { if (artCodeModel == null) { continue; } XamTreeItem newItem = new XamTreeItem { Header = artCodeModel.Number + ": " + artCodeModel. Description + " (" + artCodeModel.DirectArticlesCount + " / " + artCodeModel.IndirectArticlesCount + ")", DataContext = artCodeModel }; if (Application.Current.Resources["AttributingReadyToImageSourceConverter"] == null) { throw new Exception("XamlParseException - AttributingReadyToImageSourceConverter"); } string dataTemplate = @" "; newItem.ItemTemplate = (DataTemplate)XamlReader.Load(dataTemplate); XamTreeItem dummyXamTreeItem = new XamTreeItem(); dummyXamTreeItem.Visibility = Visibility.Collapsed; newItem.Items.Add(dummyXamTreeItem); newItem.MouseLeftButtonDown += new MouseButtonEventHandler(XamTreeItem_MouseLeftButtonDown); double actualWidth = newItem.ActualWidth + 20; if (m_MinWidth < actualWidth) { m_MinWidth = actualWidth; } Children.Add(newItem); foreach (XamTreeItem xamTreeItem in Children) { xamTreeItem.MinWidth = m_MinWidth;} } } else { foreach (ArticleCodeModel artCodeModel in codeModels) { if (artCodeModel == null) { continue; } ArticleCodeModel parent = m_XamTreeItemParent.DataContext as ArticleCodeModel; if (parent == null) { continue; } if (m_XamTreeItemParent.Items.Count > codeModels.Count) { continue; } XamTreeItem newItem = new XamTreeItem XamTreeItem newItem = new XamTreeItem { Header = artCodeModel.Number + ": " + artCodeModel. Description + " (" + artCodeModel.DirectArticlesCount + " / " + artCodeModel.IndirectArticlesCount + ")", DataContext = artCodeModel }; if (Application.Current.Resources["AttributingReadyToImageSourceConverter"] == null) { throw new Exception("XamlParseException - AttributingReadyToImageSourceConverter"); } string dataTemplate = @" "; newItem.ItemTemplate = (DataTemplate)XamlReader.Load(dataTemplate); if (m_XamTreeItemParent.Level < 2) { XamTreeItem dummyXamTreeItem = new XamTreeItem(); dummyXamTreeItem.Visibility = Visibility.Collapsed; newItem.Items.Add(dummyXamTreeItem); } newItem.MouseLeftButtonDown += new MouseButtonEventHandler(XamTreeItem_MouseLeftButtonDown); double actualWidth = newItem.ActualWidth + 20; if (m_MinWidth < actualWidth) { m_MinWidth = actualWidth; } m_XamTreeItemParent.Items.Add(newItem); foreach (XamTreeItem xamTreeItem in m_XamTreeItemParent.Items) { xamTreeItem.MinWidth = m_MinWidth; } } } OnNotifyPropertyChanged("Children"); }