4

我正在关注教程,但我遇到了一个奇怪的问题。有一段说:

在 SplitPage.xaml 中,我们还更新了 itemListView 中的 ItemTemplate 属性,以使用我们的 DefaultListItemTemplate 资源,而不是默认模板 Standard130ItemTemplate。这是 itemListView 的更新 XAML。

但是,无论我做什么,它都会显示带有默认模板的列表,如下所示。这是我的代码:

<DataTemplate x:Key="DefaultListItemTemplate">
    <Grid HorizontalAlignment="Stretch" Width="Auto" Height="110" Margin="10,10,10,0">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <!-- Green date block -->
        <Border Background="{StaticResource BlockBackgroundBrush}" Width="110" Height="110" />
        <ContentControl Template="{StaticResource DateBlockTemplate}" />
        <StackPanel Grid.Column="1"  HorizontalAlignment="Left" Margin="12,8,0,0">
            <TextBlock Text="{Binding Title}" FontSize="26.667" TextWrapping="Wrap"
                   MaxHeight="72" Foreground="#FFFE5815" />
            <TextBlock Text="{Binding Author}" FontSize="18.667" />
        </StackPanel>
    </Grid>
</DataTemplate>

...在 Page.Resources 中,以及

<ListView
    x:Name="itemListView"
    AutomationProperties.AutomationId="ItemsListView"
    AutomationProperties.Name="Items"
    TabIndex="1"
    Grid.Row="1"
    Margin="-10,-10,0,0"
    Padding="120,0,0,60"
    ItemsSource="{Binding Source={StaticResource itemsViewSource}}"
    IsSwipeEnabled="False"
    SelectionChanged="ItemListView_SelectionChanged"
    ItemTemplate="{StaticResource DefaultListItemTemplate}"/>

...在页面的网格中。

我试过内联模板并修改 Standard130ItemTemplate 无济于事。但是,指定不存在的模板会引发构建错误。

有什么想法我可能做错了吗?

4

1 回答 1

4

显然这是由于我的屏幕分辨率低(1280x800)造成的。我没有注意到拆分页面模板为 FilledOrNarrow 定义了以下 VisualState:

                <ObjectAnimationUsingKeyFrames Storyboard.TargetName="itemListView" Storyboard.TargetProperty="ItemTemplate">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource Standard80ItemTemplate}"/>
                </ObjectAnimationUsingKeyFrames>

我尝试在模拟器中运行它,任何比它更宽的东西(例如 1366x768)都可以正常工作。

于 2012-07-25T11:41:20.187 回答