繁体   English   中英

WPF ItemsControl绑定在绑定到视图模型中的对象中的ObservableCollection时不会更新

[英]WPF ItemsControl binding not updating when bound to an ObservableCollection in an object in the View Model

基本上,我的视图模型中有一个对象,其中包含一个自定义对象的ObservableCollection。 我的XAML的DataContext设置为ViewModel,ViewModel包含一个“ Scratchdisk”对象,而Scratchdisk对象包含一个Frame对象的ObservableCollection。 暂存盘和集合都设置为DependencyProperties。

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

Frame对象具有3个标准属性:Index,Image和ImageUrl。

我正在尝试使用以下代码绑定到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>

从理论上讲,应该发生的事情是,暂存盘应该接收文件名,创建Frame对象,将它们添加到Collection中,然后绑定应该显示它们。 ObservableCollection正在运行并且正在填充,但是绑定没有被更新。 所有可更新的属性都设置为DependencyProperties,因此绑定应该更新吗?

链接到文件:

XAML

视图模型

暂存盘

问题出在ItemsControlDataContext的绑定中。 您将其设置为"{Binding Source=ThumbnailScratchdisk}" ,但是(大概)您希望将其设置为"{Binding ThumbnailScratchdisk}"

页面的DataContext已经是EditorViewModel的实例,并且您希望ItemsControlDataContext绑定到该视图模型的属性ThumbnailScratchdisk

尝试将XAML中的绑定路径更改为ThumbnailScratchdisk.Frames

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM