Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF ItemsControl绑定在绑定到视图模型中对象中的ObservableCollection时未更新_C#_Wpf_Xaml_Binding_Dependency Properties - Fatal编程技术网

C# WPF ItemsControl绑定在绑定到视图模型中对象中的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

基本上,我的视图模型中有一个对象,它包含一个自定义对象的可观察集合。我的XAML的DataContext设置为我的ViewModel,我的ViewModel包含一个“Scratchdisk”对象,Scratchdisk对象包含一个框架对象的ObservableCollection。Scratchdisk和集合都设置为DependencyProperties

简而言之:XAML-DataContext->EditorViewModel-DependencyProperty->Scratchdisk-DependencyProperty->ObservableCollection

框架对象有3个标准属性:索引、图像和图像URL

我正试图使用以下代码绑定到XAML中的ObservableCollection:

<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方法。它在哪里?代码是什么?