当尝试将DynamicResource用作ListView的ItemsSource时,我的应用程序输出错误:
窗口必须是树的根。 无法添加Window作为孩子 视觉。
如果我要删除ItemsSource,并保留代码,那么我就不会收到错误并显示一个空的ListView。
位于我的Window.XAML中的我的ListView如下:
<ListView Grid.Column="1" Grid.Row="8" Grid.RowSpan="4" ItemsSource="{DynamicResource tasksResponsibilitiesCollection}">
<ListView.View>
<GridView AllowsColumnReorder="True">
<GridViewColumn DisplayMemberBinding="{Binding tasksResponsibilitiesName}" Header="Tasks/Responsibility" Width="150" />
<GridViewColumn Header="Member Responsible" Width="120" />
<GridViewColumn Header="Qualifications" Width="110" />
</GridView>
</ListView.View>
</ListView>
ItemsSource是代码隐藏中定义的ObservableCollection。我一直在使用MSDN示例(http://msdn.microsoft.com/en-us/library/ms747048.aspx)作为创建ListView的指南
如何将ObservableCollection投标到ListView?我是否必须在Window.XAML中的某个地方定义资源?
如果有任何我未提及的内容,请告诉我。
感谢您的协助,
马特
答案 0 :(得分:1)
如果ObservableCollection
被定义为窗口代码隐藏中的属性,那么您可以使用数据绑定来设置ItemsSource
,如下所示:
<ListView Grid.Column="1" Grid.Row="8" Grid.RowSpan="4" ItemsSource="{Binding Path=tasksResponsibilitiesCollection, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}">
<ListView.View>
<GridView AllowsColumnReorder="True">
<GridViewColumn DisplayMemberBinding="{Binding tasksResponsibilitiesName}" Header="Tasks/Responsibility" Width="150" />
<GridViewColumn Header="Member Responsible" Width="120" />
<GridViewColumn Header="Qualifications" Width="110" />
</GridView>
</ListView.View>
</ListView>
请注意,tasksResponsibilitiesCollection
必须是您窗口代码隐藏的公共财产。