1

我将尝试在这里提供尽可能多的信息,但让我在前面说我对常规数据源的知识没有信心,更不用说 Blend 中的设计时数据。我的运行时工作正常,并在网格视图中显示分组项目。在 Blend 中查看时,我什么也得不到,我想显示一些与运行时相同的示例数据。有可能实现这一目标吗?此外,如果我出错并且运行时数据源过于复杂,请随时提出更改建议。

<common:LayoutAwarePage
x:Name="pageRoot"
x:Class="ScoreAlerts.ItemsPage"
DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}"
...snip...>

<CollectionViewSource x:Name="itemsViewSource" IsSourceGrouped="true" Source="{Binding Items}"/>

             <GridView
            x:Name="itemGridView"
            AutomationProperties.AutomationId="ItemsGridView"
            AutomationProperties.Name="Items"
            TabIndex="1"
            Grid.RowSpan="2"
            Padding="116,136,116,46"
            SelectionMode="None"
            IsSwipeEnabled="false"
            IsItemClickEnabled="True"
            ItemClick="ItemView_ItemClick" FontFamily="Global User Interface" FontWeight="Light" Margin="0,0,10,0">
            <GridView.Resources>
            <!-- Grid-appropriate 250 pixel square item template as seen in the GroupedItemsPage and ItemsPage -->
                <DataTemplate x:Key="GridItem">
                    <Grid HorizontalAlignment="Left" Width="250" Height="250">
                        <Border Background="{x:Null}">
                            <Image Source="{Binding Image}" Stretch="UniformToFill" AutomationProperties.Name="{Binding Title}"/>
                        </Border>
                        <StackPanel VerticalAlignment="Bottom" Background="{StaticResource ListViewItemOverlayBackgroundThemeBrush}">
                            <TextBlock Text="{Binding Title}" Foreground="{StaticResource ListViewItemOverlayForegroundThemeBrush}" Style="{StaticResource TitleTextStyle}" Height="60" Margin="15,0,15,0"/>
                            <!-- <TextBlock Text="{Binding Subtitle}" Foreground="{StaticResource ListViewItemOverlaySecondaryForegroundThemeBrush}" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap" Margin="15,0,15,10"/> -->
                        </StackPanel>
                    </Grid>
                </DataTemplate>
            </GridView.Resources>
            <GridView.ItemsSource>
                <Binding Source="{StaticResource itemsViewSource}"/>
            </GridView.ItemsSource>


            <!-- Item Template -->
            <GridView.ItemTemplate>
                <StaticResource ResourceKey="GridItem"/>
            </GridView.ItemTemplate>

            <!-- Item Panel Template -->
            <GridView.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapGrid MaximumRowsOrColumns="4"
                        HorizontalAlignment="Left"
                        VerticalAlignment="Center" />
                </ItemsPanelTemplate>
            </GridView.ItemsPanel>

            <GridView.GroupStyle>
                <GroupStyle>
                    <GroupStyle.HeaderTemplate>
                        <DataTemplate>
                            <Grid Margin="0">
                                <TextBlock Text="{Binding Key}"
                                    Style="{StaticResource PageSubheaderTextStyle}"
                                    Margin="8 4 0 10" />
                            </Grid>
                        </DataTemplate>
                    </GroupStyle.HeaderTemplate>
                    <GroupStyle.Panel>
                        <ItemsPanelTemplate>
                            <VariableSizedWrapGrid Orientation="Vertical" Margin="0 0 40 0"/>
                        </ItemsPanelTemplate>
                    </GroupStyle.Panel>
                </GroupStyle>
            </GridView.GroupStyle>

        </GridView>

在代码中我有这个

this.DefaultViewModel["Items"] = ScoreDataSource.GetGroups("AllGroups")

我的 ScoreDataSource 有以下内容

public sealed class ScoreDataSource
{
    public static ScoreDataSource _ScoreDataSource = new ScoreDataSource();

    private ObservableCollection<ScoreDataGroup> _allGroups = new ObservableCollection<ScoreDataGroup>();
    public ObservableCollection<ScoreDataGroup> AllGroups
    {
        get { return this._allGroups; }
    }

    public static IEnumerable<object> GetGroups(string uniqueId)
    {
        if ( uniqueId == "AllGroups" )
        {
            var query = from item in _ScoreDataSource.AllGroups
                        orderby item.Country
                        group item by item.Country into g
                        select g;

            return query;
        }
        else
        {
            return _ScoreDataSource.AllGroups;
        }
    }
4

0 回答 0