数据模板无法解析DataType前缀数据。

5

左图是错误,右图是 Microsoft 的示例

我正在尝试使用 Windows 的示例代码在 UWP 中实现 ListView

<ListView.GroupStyle>
            <GroupStyle >
                <GroupStyle.HeaderTemplate>
                    <DataTemplate x:DataType="data:GroupInfoList">
                        <TextBlock Text="{x:Bind Key}" 
                                   Style="{ThemeResource TitleTextBlockStyle}"/>
                    </DataTemplate>
                </GroupStyle.HeaderTemplate>
            </GroupStyle>
        </ListView.GroupStyle>

这一行 -

DataTemplate x:DataType="data:GroupInfoList"

给我带来了错误,如左图所示。当创建模型时,我应该以不同的方式创建它们吗?它说:

命名空间前缀"data"未定义。

这是我需要包含的命名空间吗?


个人而言,我放弃了编译绑定,只使用了普通绑定。这似乎是一个设计时错误,因为我以前已经编译过它了。 - Billy Jake O'Connor
4个回答

5

在您的情况下,data: GroupInfoList 是命名空间映射 data 中的类型 GroupInfoList
您必须先定义命名空间映射才能使用它。

SimpleListViewSamplePage元素中,您应该有类似于以下内容:

<Page
    x:Class="HermantsListV2.Sample.SimpleListViewSample"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    xmlns:data="HermantsListV2.Model">
...

请注意xmlns:data="HermantsListV2.Model的映射。

只需将上述示例中的命名空间替换为您项目中的正确命名空间,然后它就应该正常工作。


有意义的工作但出现错误> 错误严重程度代码描述项目文件行 错误:命名空间“HermantsListV2.Model”中不存在名称“Contact”。Hemant的清单V2 C:\ Users \ webonise \ Documents \ Visual Studio 2015 \ Projects \ Hemant的清单V2 \ Hemant的清单V2 \ Sample \ SimpleListViewSample.xaml 17 - Hemant-Webo
就在那里。 - Hemant-Webo
我清理并重新构建了解决方案。仍然不起作用! - Hemant-Webo
那么请检查以下内容:a)您要绑定的类是否为公共类?b)名称空间是否正确(我只是使用了一些示例名称空间,因为我不知道您的确切名称空间)? - TorbenJ

2

Visual Studio 2015 中存在一个 bug,解决方法是将代码部分注释掉并运行。之后取消注释即可正常运行而无任何错误。

1- 将以下代码部分注释掉:

<!--<DataTemplate x:DataType="data:GroupInfoList">
          <TextBlock Text="{x:Bind Key}" 
                     Style="{ThemeResource TitleTextBlockStyle}"/>
 </DataTemplate>-->

2- 运行你的应用程序。

3- 取消注释以下代码:

<DataTemplate x:DataType="data:GroupInfoList">
          <TextBlock Text="{x:Bind Key}" 
                     Style="{ThemeResource TitleTextBlockStyle}"/>
 </DataTemplate>

4- 运行应用程序。


1

有时候,如果你在GridView等控件中剪切代码,然后保存、构建并粘贴回去,就可以使其正常工作。不确定原因是什么,但这样做有时可以修复问题,可能是因为VS隐藏了一些东西。


1
我刚刚遇到了同样的问题,这个页面是从通用列表视图示例中复制/粘贴而来。
粘贴的页面充满了一些坏字符,例如换行符等。 我通过删除数据模板周围的行和换行符来清理页面,现在一切都好了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接