0

メディアからのニュースに関する Windows Phone プロジェクトがあります。このプロジェクトでは、パノラマアイテムを持っています。最初の画面で、Web API からニュースを取得します。

私はロングリストセレクターを使用してこれらのニュースを取得しますが、最初/ホット/最新の新しいものを全体像とテキストとともに一番上に配置したいと考えています。しかし、グリッド上でLongListSelector同時にソースを正しく与えることができませんでした。

要するに、私は自分のニュースを「上下に並べて」リストしたいと考えており、最新/最初のニュースが一番上に大きく表示されます。

これが私が試したことです。

メインページ.XAML

<!--Panorama item one-->
<phone:PanoramaItem Header="Haberler" Foreground="DarkGreen">
    <ScrollViewer VerticalScrollBarVisibility="Auto" Background="White">
        <StackPanel Orientation="Vertical">


                        <Grid x:Name="HeadNew">
                            <TextBlock x:Name="textBlock14" Text="{Binding Path=TITLE}"  TextWrapping="Wrap" Margin="20,0" FontSize="{StaticResource PhoneFontSizeLarge}" Foreground="Black"/>
                            <Border Width="400" Height="250">
                                <Border.Background>
                                    <ImageBrush Stretch="Uniform" ImageSource="{Binding Path=MF658370_IMAGE}"/>
                                </Border.Background>
                            </Border>
                        </Grid>

            <phone:LongListSelector x:Name="MainLongListSelector" Background="White" Margin="-20,0,0,0" Height="Auto" Loaded="MainLongListSelectorLoaded" SelectionChanged="MainLongListSelectorSelectionChanged" toolkit:TiltEffect.IsTiltEnabled="True">
                <phone:LongListSelector.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal" Margin="12,2,0,4" Height="Auto" Width="Auto">
                            <Border Width="126" Height="70">
                                <Border.Background>
                                    <ImageBrush Stretch="Uniform" ImageSource="{Binding Path=MF12670_IMAGE}"/>
                                </Border.Background>
                            </Border>
                            <TextBlock x:Name="textBlock1" Text="{Binding Path=TITLE}" Margin="10,0" FontSize="{StaticResource PhoneFontSizeMedium}" Foreground="Black" />
                        </StackPanel>
                    </DataTemplate>
                </phone:LongListSelector.ItemTemplate>
            </phone:LongListSelector>

        </StackPanel>
    </ScrollViewer>
</phone:PanoramaItem>

これがMAINPAGE.XAML.CSです

private void MainLongListSelectorLoaded(object sender, RoutedEventArgs e)
{
    const string url = "MY_WEB_API_URL";
    var hWebRequest = (HttpWebRequest)WebRequest.Create(url);
    hWebRequest.Method = "GET";
    hWebRequest.BeginGetResponse(MainLongListSelectorLoadCompleted, hWebRequest);
}

private void MainLongListSelectorLoadCompleted(IAsyncResult arr)
{
    var request = (HttpWebRequest)arr.AsyncState;
    var response = (HttpWebResponse)request.EndGetResponse(arr);
    using (var streamReader = new StreamReader(response.GetResponseStream()))
    {
        _json = streamReader.ReadToEnd();
        Headlines = JsonConvert.DeserializeObject<FanatikApiAll.RootObject>(_json);
    }
    Deployment.Current.Dispatcher.BeginInvoke(() =>
    {
        MainLongListSelector.ItemsSource = Headlines.Headline;
    });

    Deployment.Current.Dispatcher.BeginInvoke(() =>
    {
        HeadNew.DataContext = Headlines.Headline;
    });
}
4

1 に答える 1

1

HeadNew はリスト コントロールではないため、リスト全体ではなく、必要な項目のみを割り当てる必要があります。たとえば、最初のアイテムがあればそれを取得するには:

Deployment.Current.Dispatcher.BeginInvoke(() =>
{
    HeadNew.DataContext = Headlines.Headline.FirstOrDefault();
});
于 2013-07-24T09:15:23.303 に答える