<ItemsControl x:Name="itemsRoot" ItemsSource="{Binding Path=Context.Levels, ElementName=This}" Margin="0,0,0,-5">
这是我的带有简单绑定的 ItemsControl。Levels 道具在 Loaded-Event 中填充。
我的观察是,在 Loaded-Event 发生后,只有具有空 StackPanel 的 ItemsPresenter 位于可视树中。一旦我使用 Snoop 并选择 ItemsControl,它就会弹出。我正在寻找一个丢失的“PropertyChanged”事件,但我不确定 Snoop 除了调用所选对象上的所有 Getter 之外还在做什么。我在我的应用程序的不同点上注意到了这种行为。这个在绑定中使用 ElementName。不确定它是否有所作为,但始终是一个 ItemsControl,它不会建立它的 Children。
水平道具:
public IReadOnlyCollection<MultiLevelSelectionLevel> Levels
{
get
{
return this.levels;
}
private set
{
if (value != this.levels)
{
this.levels = value;
OnPropertyChanged();
}
}
}
上下文是一个 INotifyPropertyChanged-Object。Loaded-handler 只是:this.Context.Levels = new ReadOnlyObservableCollection<Level>(levels)
在我的测试中包含 3 个视图模型实例。