ItemsControl 不显示项目

ItemsControl not showing items

自从我定期与 XAML 合作以来已经有一段时间了,我正在努力学习基础知识。

我正尝试在 ItemsControl 中显示项目,如下所示:

<DockPanel DockPanel.Dock="Left" Width="800">

    <TextBlock DockPanel.Dock="Top" Text="{Binding ProfilePages.Count}"></TextBlock>

    <Grid>
        <ItemsControl ItemsSource="{Binding ProfilePages}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="Hello World" Height="100" Width="200" Background="AliceBlue"></TextBlock>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>

    </Grid>   

</DockPanel>

ViewModel 非常基础:

public class XtmProjectViewModel : NotifyingObject
{
    private ViewModelCollection<XtmProfilePageViewModel, XtmProfilePage> _profilePages;

    public ViewModelCollection<XtmProfilePageViewModel, XtmProfilePage> ProfilePages
    {
        get { return _profilePages; }

        set
        {
            _profilePages = value;
            RaisePropertyChanged(() => ProfilePages);
        }
    }

    public ViewModelCollection<XtmSearchPageViewModel, XtmSearchPage> SearchPages { get; }

    public XtmProjectViewModel(XtmProject model)
    {
        ProfilePages = new ViewModelCollection<XtmProfilePageViewModel, XtmProfilePage>(model.ProfilePages, s => new XtmProfilePageViewModel(s));
        SearchPages = new ViewModelCollection<XtmSearchPageViewModel, XtmSearchPage>(model.SearchPages, s => new XtmSearchPageViewModel(s));
        ProfilePages.CollectionChanged += ProfilePages_CollectionChanged;
    }

    private void ProfilePages_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
    {
        Console.WriteLine("Test");
        RaisePropertyChanged(() => ProfilePages);
    }
}

ViewModelCollection 是一种自定义类型,它会自动与基础模型集合同步。我已经在所有类型的场景中使用它多年,没有任何问题。

但是,在视图中,项目没有显示,我得到了一个我无法解释的奇怪行为:

我无法解释这种行为,也不知道问题出在哪里。我已经检查了常见问题([=22= 的错误定义、缺少 CollectionChanged 事件、导致项目渲染不可见的布局错误等,但没有成功)。

如何解释这种行为? 如何修复?

应 OP 的要求,将我的评论移至答案,我们来了 15000 ;)

想知道您是否将对象插入到不在 UI 线程上的 ProfilePages 中。