我已经设置了我的DataContext
:
<Window.DataContext>
<c:DownloadManager />
</Window.DataContext>
DownloadManager
为Enumerable<DownloadItem>
的位置。然后我像这样设置DataGrid
:
<DataGrid Name="dataGrid1" ItemsSource="{Binding Path=/}" ...
所以它应该列出所有的DownloadItems,对吗?所以我应该能够设置我的列:
<DataGridTextColumn Binding="{Binding Path=Uri, Mode=OneWay}"
其中Uri
是DownloadItem
的属性。但它似乎并不喜欢这样。在可视属性编辑器中,它无法识别Uri
是一个有效的属性,所以我猜我做错了。
以前工作时,我将数据网格绑定到Values
,但后来我从DownloadManager
中取出了可枚举的数据并使其自身可枚举。我该如何解决这个问题?
PS:“不起作用”我的意思是它没有列出任何项目。我已经在DM的构造函数中添加了一些,所以它不应该是空的。
答案 0 :(得分:7)
试试ItemsSource="{Binding}"
。这应该够了。
答案 1 :(得分:5)
为了回应OP关于为什么{Binding}有效的问题,但{Binding Path = /}不起作用,我将添加以下信息作为澄清差异的答案。
以下摘自MSDN Data Binding Overview > Binding to Collections:
当前项目指针
观点也支持a的概念 当前项目。你可以浏览 集合视图中的对象。如 你导航,你正在移动一个项目 允许您检索的指针 那个存在的对象 集合中的特定位置。 有关示例,请参阅How to: Navigate Through the Objects in a Data CollectionView。
因为WPF仅绑定到集合 通过使用视图(视图你 指定,或集合的默认值 视图),所有绑定到集合 有一个当前项目指针。什么时候 绑定到视图,斜杠(“/”) Path值中的字符指定 视图的当前项。在里面 以下示例,数据上下文是 集合视图。第一行 绑定到集合。第二 line绑定到当前项目 采集。第三行绑定 的Description属性 该集合中的当前项目。
<Button Content="{Binding }" />
<Button Content="{Binding Path=/}" />
<Button Content="{Binding Path=/Description}" />
答案 2 :(得分:-1)
作为Danko答案的替代解决方案,我发现了静态资源! (我是WPF菜鸟)
<Window x:Class="ImageGetGUI.MainWindow"
...
<Window.Resources>
<c:DownloadManager x:Key="dm"/>
</Window.Resources>
...
<DataGrid Name="dataGrid1" ItemsSource="{StaticResource dm}" ...