首页 > 解决方案 > “内容”属性被多次定义

问题描述

我正在尝试创建一个网格视图,我可以在其中显示列表中的所有用户,而 VS 向我返回以下错误:

XLS050:多次定义“内容”属性

XAML 代码:

<Page
x:Class="AppTeste.UsersGrid"
Background="{ThemeResource SystemAltMediumHighColor}">
<Page.Resources>
    <DataTemplate x:Key ="ImageTextTemplate"/>
</Page.Resources>

<GridView
x:Name="ContentGridView2"
ItemsSource="{x:Bind Users}"
ItemTemplate="{StaticResource ImageTextTemplate}"
IsItemClickEnabled="True"
CanDragItems="True"
AllowDrop="False"
CanReorderItems="False"
SelectionMode="Single"
FlowDirection="LeftToRight"/>

    <Grid AutomationProperties.Name = '{x:Bind Name}' Width = '280'>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width = 'Auto'/>
            <ColumnDefinition Width = '*'/>
        </Grid.ColumnDefinitions>
        <!--<Image Source = '' Height = '100' Stretch = 'Fill' VerticalAlignment = 'Top'/>-->
        <StackPanel Grid.Column = '1' Margin = '8,0,0,8'>
            <TextBlock Text = '{x:Bind  Name}' Style = '{ThemeResource SubtitleTextBlockStyle}' Margin = '0,0,0,8'/>
            <StackPanel Orientation = 'Horizontal'>
                <TextBlock Text = '{x:Bind Email}' Style = '{ThemeResource CaptionTextBlockStyle}'/>
                <TextBlock Text = ' Views ' Style = '{ThemeResource CaptionTextBlockStyle}'/>
            </StackPanel>
            <StackPanel Orientation = 'Horizontal'>
                <TextBlock Text = '{x:Bind  ID}' Style = '{ThemeResource CaptionTextBlockStyle}'/>
                <TextBlock Text = 'ID' Style = '{ThemeResource CaptionTextBlockStyle}'/>
            </StackPanel>
        </StackPanel>
    </Grid>

C#类:

 public sealed partial class UsersGrid : Page
{

    public List<User> Users { get; set; }

    public UsersGrid()
    {
        Users = new List<User>();

        for (int i = 0; i < 20; i++)
        {
            Users.Add(new User() { ID = i, Name = $"Utilizador{i}", Email = $"Utillizador{i}@servidor.pt" });
        }


        this.InitializeComponent();
    }
}

我无法弄清楚我做错了什么,因为我使用的是 Microsoft XAML 控制库中几乎未经编辑的 GridView 模板,即使它完全未经编辑,它也会返回相同的错误。

标签: c#xamluwpuno-platform

解决方案


问题是Page它的内容只能有一个元素。在这种情况下,您有两个 -GridViewGrid

要解决此问题,请将两者包装在另一个布局元素中,例如Grid. 一般来说,确保Page只有一个孩子。

更新:重新阅读代码后,您似乎真的Grid希望ItemTemplate. GridView在这种情况下,它将如下所示(您需要替换YOURMODELTYPE为您的实际项目类型):

<GridView
x:Name="ContentGridView2"
ItemsSource="{x:Bind Users}"
ItemTemplate="{StaticResource ImageTextTemplate}"
IsItemClickEnabled="True"
CanDragItems="True"
AllowDrop="False"
CanReorderItems="False"
SelectionMode="Single"
FlowDirection="LeftToRight">
   <GridView.ItemTemplate>
    <DataTemplate x:DataType="YOURMODELTYPE">
    <Grid AutomationProperties.Name = '{x:Bind Name}' Width = '280'>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width = 'Auto'/>
            <ColumnDefinition Width = '*'/>
        </Grid.ColumnDefinitions>
        <!--<Image Source = '' Height = '100' Stretch = 'Fill' VerticalAlignment = 'Top'/>-->
        <StackPanel Grid.Column = '1' Margin = '8,0,0,8'>
            <TextBlock Text = '{x:Bind  Name}' Style = '{ThemeResource SubtitleTextBlockStyle}' Margin = '0,0,0,8'/>
            <StackPanel Orientation = 'Horizontal'>
                <TextBlock Text = '{x:Bind Email}' Style = '{ThemeResource CaptionTextBlockStyle}'/>
                <TextBlock Text = ' Views ' Style = '{ThemeResource CaptionTextBlockStyle}'/>
            </StackPanel>
            <StackPanel Orientation = 'Horizontal'>
                <TextBlock Text = '{x:Bind  ID}' Style = '{ThemeResource CaptionTextBlockStyle}'/>
                <TextBlock Text = 'ID' Style = '{ThemeResource CaptionTextBlockStyle}'/>
            </StackPanel>
        </StackPanel>
    </Grid>   
   </DataTemplate>
  <GridView.ItemTemplate>
</GridView>

推荐阅读