0

我正在开发 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”仅加载其“标题”和“时间”属性。但是当显示的每个项目我也想加载项目“描述”。“描述”通过发送请求从服务器端获取。要发送该请求,我需要在每个项目显示(滚动)时“显示”或任何其他事件。

4

1 回答 1

0

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

于 2012-09-03T14:45:50.893 回答