【问题标题】:Windows 8 Metro: ListView ignores ItemTemplateWindows 8 Metro:ListView 忽略 ItemTemplate
【发布时间】:2012-07-24 09:11:55
【问题描述】:

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

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

但是,无论我做什么,它都会显示带有默认模板的列表,看起来像this。这是我的代码:

<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 无济于事。但是,指定不存在的模板会引发构建错误。

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

【问题讨论】:

    标签: c# xaml windows-8 microsoft-metro


    【解决方案1】:

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

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

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

    【讨论】:

    • 我遇到了完全相同的问题,感谢您的解释
    • 我也有同样的事情。诡异的。为什么这会导致错误?
    猜你喜欢
    • 2011-01-20
    • 2013-01-16
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多