none
GridView数据源绑定问题,求帮助? RRS feed

  • 问题

  • <common:LayoutAwarePage
        x:Name="pageRoot"
        x:Class="App3.GroupedItemsPage"
        DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}"
        IsTabStop="false"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:App3"
        xmlns:data="using:App3.Data"
        xmlns:common="using:App3.Common"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d">
    
        <Page.Resources>
            <CollectionViewSource
                x:Name="groupedItemsViewSource"
                IsSourceGrouped="true"
                />
        </Page.Resources>
    
        <!--
            This grid acts as a root panel for the page that defines two rows:
            * Row 0 contains the back button and page title
            * Row 1 contains the rest of the page layout
        -->
        <Grid Style="{StaticResource LayoutRootStyle}">
            <Grid.RowDefinitions>
                <RowDefinition Height="140"/>
                <RowDefinition Height="2*"/>
            </Grid.RowDefinitions>
            <!-- Back button and page title -->
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <Button x:Name="backButton" Click="GoBack" IsEnabled="{Binding Frame.CanGoBack, ElementName=pageRoot}" Style="{StaticResource BackButtonStyle}"/>
                <TextBlock x:Name="pageTitle" Text="{StaticResource AppName}" Grid.Column="1" Style="{StaticResource PageHeaderTextStyle}"/>
            </Grid>
            <Grid x:Name="grid" Grid.Row="1">
                <GridView x:Name="itemss" ItemsSource="{Binding Source={StaticResource groupedItemsViewSource}}">
                    <GridView.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding title}" FontSize="26" Foreground="Red"/>
                        </DataTemplate>
                    </GridView.ItemTemplate>
                </GridView>
             </Grid>
            <!-- Horizontal scrolling grid used in most view states -->
    
            <!-- Vertical scrolling list only used when snapped -->
    
        </Grid>
    </common:LayoutAwarePage>
    

    以上代码为xaml里面的代码,在xaml中定义了一个GridView。

    在代码中,进行数据源的绑定操作,首先定义一个数据存储类,如下:

        public class data
        {
            public string title { get; set; }
        }

    然后定义一个List集合,生成一个数据源

                List<data> listdata = new List<data>();
                listdata.Add(new data() { title = "fasdfadsfa" });
                listdata.Add(new data() { title = "fasdfadsfa" });
                listdata.Add(new data() { title = "fasdfadsfa" });

    最后我将数据绑定到GridView中,这个时候问题来了,我通过下面这种方式绑定,项目运行后,数据可在界面上正常显示

    itemss.ItemsSource = listdata;

    但是通过另外一种方式绑定后,界面上什么都不显示了

    groupedItemsViewSource.Source = listdata;

    这是什么原因啊,我找了很久都没找到问题原因?

    2012年8月8日 8:06

答案

  • 问题出在 IsSourceGrouped="true" 上,去掉即可。

    或者你为你的GridView 设计一个 GroupStyle, 参考Grid App 模板中的代码。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年8月9日 3:56
    版主