C# WPF ItemsControl绑定在绑定到视图模型中对象中的ObservableCollection时未更新
基本上,我的视图模型中有一个对象,它包含一个自定义对象的可观察集合。我的XAML的DataContext设置为我的ViewModel,我的ViewModel包含一个“Scratchdisk”对象,Scratchdisk对象包含一个框架对象的ObservableCollection。Scratchdisk和集合都设置为DependencyProperties 简而言之:XAML-DataContext->EditorViewModel-DependencyProperty->Scratchdisk-DependencyProperty->ObservableCollection 框架对象有3个标准属性:索引、图像和图像URL 我正试图使用以下代码绑定到XAML中的ObservableCollection:C# WPF ItemsControl绑定在绑定到视图模型中对象中的ObservableCollection时未更新,c#,wpf,xaml,binding,dependency-properties,C#,Wpf,Xaml,Binding,Dependency Properties,基本上,我的视图模型中有一个对象,它包含一个自定义对象的可观察集合。我的XAML的DataContext设置为我的ViewModel,我的ViewModel包含一个“Scratchdisk”对象,Scratchdisk对象包含一个框架对象的ObservableCollection。Scratchdisk和集合都设置为DependencyProperties 简而言之:XAML-DataContext->EditorViewModel-DependencyProperty->Scratchdisk
<ItemsControl DataContext="{Binding Source=ThumbnailScratchdisk}" ItemsSource="{Binding Frames, UpdateSourceTrigger=PropertyChanged}" ItemTemplate="{StaticResource ThumbnailTemplate}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal"></VirtualizingStackPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
其中,ThumbnailTemplate在窗口资源中定义为:
<DataTemplate x:Key="ThumbnailTemplate">
<Image Width="128" Height="96" Source="{Binding ImageUrl}"/>
</DataTemplate>
理论上,应该发生的是,Scratchdisk应该接收文件名,创建帧对象,将它们添加到集合中,然后绑定应该显示它们。ObservableCollection正在工作并正在填充,但绑定没有更新。所有可更新的属性都设置为DependencyProperties,因此绑定应该更新,不是吗
指向文件的链接:
尝试将XAML中的绑定路径更改为ThumbnailScratchdisk.Frames尝试将XAML中的绑定路径更改为ThumbnailScratchdisk.Frames问题在于ItemsControl的DataContext绑定中。 您正在将其设置为{Binding Source=ThumbnailScratchdisk},但您可能希望将其设置为{Binding ThumbnailScratchdisk}
页面的DataContext已经是EditorViewModel的实例,您希望ItemsControl的DataContext绑定到该viewmodel的属性ThumbnailScratchdisk。问题在于ItemsControl的DataContext的绑定。 您正在将其设置为{Binding Source=ThumbnailScratchdisk},但您可能希望将其设置为{Binding ThumbnailScratchdisk}
页面的DataContext已经是EditorViewModel的实例,您希望ItemsControl的DataContext绑定到该viewmodel的属性ThumbnailScratchdisk。请发布具有可观察集合的viewmodel代码。请发布顶级datacontext的完整层次结构。我感觉您与Frames对象绑定,但您的datacontext是viewmodel。您需要导航到ViewModel.ScratchObject。Frames@PiyushParashar我已经链接了文章底部的文件,它们是相当大的文件,所以我不想在问题中引用它们。您需要通知框架中任何属性的更改,例如,视图的ImageUrl。您可以通过在Frame类中提供ImageUrl的默认值来测试它,如果您现在可以看到此默认值,那么您知道绑定正在工作,只是在VM中更改时没有更新。旁注:。请在您的问题中多做一些努力,您的viewmodel和observablecollection,您可以在其中更新它,“ThumbnailScratchdisk”是什么,并且只与xaml相关。没有人想删除你的资料,请发布viewmodel代码,该代码包含可观察的集合。请发布顶级datacontext的完整层次结构。我感觉您与Frames对象绑定,但您的datacontext是viewmodel。您需要导航到ViewModel.ScratchObject。Frames@PiyushParashar我已经链接了文章底部的文件,它们是相当大的文件,所以我不想在问题中引用它们。您需要通知框架中任何属性的更改,例如,视图的ImageUrl。您可以通过在Frame类中提供ImageUrl的默认值来测试它,如果您现在可以看到此默认值,那么您知道绑定正在工作,只是在VM中更改时没有更新。旁注:。请在您的问题中多做一些努力,您的viewmodel和observablecollection,您可以在其中更新它,“ThumbnailScratchdisk”是什么,并且只与xaml相关。没人想知道你的东西对不起,这没用。我认为这可能是隐含的,因为ItemsControl的DataContext被设置为ThumbnailScratchdiskYes,我一发布它就意识到:我在ScratchObject类中找不到SetValue方法。它在哪里?代码是什么?对不起,这不起作用。我认为这可能是隐含的,因为ItemsControl的DataContext被设置为ThumbnailScratchdiskYes,我一发布它就意识到:我在ScratchObject类中找不到SetValue方法。它在哪里?代码是什么?