UWP:在使用DataTemplate的x:DataType属性时编译错误

13

我正在创建一个针对Windows周年更新版本的UWP空白应用程序项目。以下是我的唯一页面(默认模板命名为MainPage.xaml)的标记:

<Page
x:Class="App1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App1"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Grid.Resources>
        <DataTemplate x:Key="MyDataTemplate" x:DataType="local:BindyThing">

        </DataTemplate>
    </Grid.Resources>
</Grid>

在CS文件中,BindyThing类的声明如下:

namespace App1
{
     public class BindyThing
     {
     }
}

从上面的标记中可以看出,我正在尝试创建一个DataTemplate来渲染BindyThing。然而,在编译时,我遇到了以下错误:

XAML二进制格式(XBF)生成器报告语法错误“0x09C4”:找不到属性

当我将DataTemplate的声明注释掉时,这个错误就消失了。有没有人知道我为什么会遇到这个问题?感谢大家的帮助。谢谢!

3个回答

11

看起来您的xaml中不能有空的DataTemplate元素。我使用以下内容使您的示例正常运行:

<DataTemplate x:Key="MyDataTemplate" x:DataType="local:BindyThing">
    <TextBlock></TextBlock>
</DataTemplate>

10
我遇到了同样的问题,我的 DataTemplate 并不是空白的。它在 App.xaml 中被定义。如果我将其简单地移动到引用它的位置并删除 x:Key 属性,同一个模板就可以正常工作。 - dotNET

2

(我在Sergei的回答中的评论对几个人很有用,所以我将其推广为一个答案,使其更加显眼)

我遇到了同样的问题,我的DataTemplate并不是空白的。它是在App.xaml中定义的。只需将它移动到被引用的地方,并删除x:Key属性即可正常工作。


2

我曾经遇到过相同的问题,但我的数据模板并不是空白的。我发现你不能将数据模板留空,并且如果你尝试在被合并到app.xaml中的资源字典中使用x:Type,它也不会起作用。 这个链接解释了如何在资源字典中使用{x:Bind}:{x:Bind}的资源字典


1
即使您不使用 x:Bind,对于 x:DataType,也需要此解决方案。 - Chris Schaller

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