Я пытаюсь создать ItemsControl для модульного теста (поэтому он не будет отображаться ни в одном представлении, это просто для тестирования расширения для itemcontrols).
Проблема в том, что мне нужен весь контейнер этого ItemsControl, который в моем случае является "нулевым".
Это код для генерации моего ItemsControl:
var items = new ObservableCollection<string> { "one", "two", "three", "four" };
var itemsControl = new ItemsControl { Height = 15, ItemsSource = items};
itemsControl.Measure(new Size(0, 100));
itemsControl.Arrange(new Rect(new Size(0,40)));
itemsControl.UpdateLayout();
Я получаю доступ к контейнеру следующим образом:
var itemContainer = (ContentPresenter)itemsControl.ItemContainerGenerator.ContainerFromIndex(0);
Так что, если элемент управления действительно используется в представлении и загружен, он работает, например, если я добавлю этот ItemsControl в StackPanel следующим образом :
this.stackPanel.Children.Add(itemsControl);
После выполнения последней упомянутой строки itemContainer больше не является нулевым, но это не то, что я хочу сделать в модульном тесте.
Is Есть ли другой способ заставить эту загрузку ItemsControl?