![](/img/trans.png)
[英]WPF Empty Row in ItemsControl Binding with 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,因此绑定应该更新吗?
链接到文件:
问题出在ItemsControl
的DataContext
的绑定中。 您将其设置为"{Binding Source=ThumbnailScratchdisk}"
,但是(大概)您希望将其设置为"{Binding ThumbnailScratchdisk}"
。
页面的DataContext
已经是EditorViewModel
的实例,并且您希望ItemsControl
的DataContext
绑定到该视图模型的属性ThumbnailScratchdisk
。
尝试将XAML中的绑定路径更改为ThumbnailScratchdisk.Frames
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.