在Windows 8 metro应用程序中显示的数据模板项的OnShown或任何其他事件

时间:2012-09-03 13:45:31

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

我正在开发windows 8 metro风格的应用程序。我的应用程序包含带有以下数据模板的页我将“NewsObject”集合绑定到模板。

<DataTemplate x:Key="NewsOverlayDataTemplate">
        <Grid Height="250" Width="250">
                <Grid.Background>
                    <Binding Path="IsView" Converter="{StaticResource headerColorConverter}"/>
                </Grid.Background>
            <TextBlock Text="{Binding Title}" Margin="10,3,10,0" TextTrimming="WordEllipsis" TextWrapping="Wrap"
                       Style="{StaticResource NewsTitleTextStyle}" HorizontalAlignment="Left" Foreground="Black"/>
            <StackPanel Orientation="Vertical" Background="BlueViolet" Height="90" VerticalAlignment="Bottom">
                <Grid  Margin="10,2,10,0">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <TextBlock Grid.Column="0" Text="{Binding Provider}" Height="14" 
                       TextTrimming="WordEllipsis" HorizontalAlignment="Left" FontSize="9" Opacity="0.49"/>
                    <TextBlock Grid.Column="1" Height="14" 
                       TextTrimming="WordEllipsis" HorizontalAlignment="Right" FontSize="9" Opacity="0.49">
                        <TextBlock.Text>
                            <Binding Path="Time" Converter="{StaticResource dateFormatConverter}" ConverterParameter="year"  />
                        </TextBlock.Text>
                    </TextBlock>

                                                           

最初“NewsObject”只加载其“标题”&amp; “时间”属性。但是当我显示的每个项目我也想加载项目“描述”。 “描述”通过发送请求从服务器端获取。发送该请求我需要“显示”或每个项目显示时的任何其他事件(滚动)。

1 个答案:

答案 0 :(得分:0)

如果您的内容显示在ItemsControl(如ListView)中,并且默认的ItemsPanel支持UI虚拟化 - 只有屏幕上显示的项目(可能还有一些相邻的项目)生成了它们的布局容器,因此Loaded事件可能会是你在找什么。您还可以假设当访问视图模型属性的getter(如“Provider”)时 - 会显示这些项目,但是您需要注意不要从DataTemplate以外的任何地方访问它们。