0

画像付きの RSS テキストを取得しようとしていますが、画像を表示できませんでした。画像を取得するためのモデルを表示し、単純な RSS 手法を使用して画像を取得します。画像とテキストの両方を取得する方法を教えてください。私のXAMLコードです:

<ListBox Name="lstRSS" ItemsSource="{Binding FeedItems}" DataContext="{StaticResource MainViewModel}" FontSize="30" Grid.Row="1">
    <ListBox.ItemTemplate>
        <DataTemplate>
             <Grid Height="700">
                    <TextBlock Text="{Binding Path=Title}"></TextBlock>
                    <UserControls:Loader Width="100" Height="100" />
                    <Image Source="{Binding Link}" Width="450" Height="350" />
             </Grid>
        </DataTemplate>
   </ListBox.ItemTemplate>
   <ListBox.ItemsPanel>
       <ItemsPanelTemplate>
           <VirtualizingStackPanel />
        </ItemsPanelTemplate>

    </ListBox.ItemsPanel>
</ListBox>
4

1 に答える 1

0

String/Uri は Image.Source プロパティの有効な値ではないため、その方法で URL にバインドすることはできません。定数 URL が xaml に設定されている場合、コンパイラによって生成されたコードが URL を受け取り、それを BitmapSource に変換するため、画像は正しく表示されます。

この方法で画像 URL をバインドするには、コンバーターが必要です。コンバーターは URL を受け取り、それを BitmapImage に変換できます。

public class UriToImageConverter : IValueConverter
{

    #region IValueConverter Members

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        // This could be extended to accept a Uri as well
        string url = value as string;
        if (!string.IsNullOrEmpty(url))
        {
            return new BitmapImage(new Uri(url, UriKind.RelativeOrAbsolute));
        }
        else
        {
            return null;
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }

    #endregion
}

次に、このクラスのインスタンスをアプリ リソース (app.xaml またはページ xaml) に追加する必要があります。

<local:UriToImageConverter x:Key="ImageConverter"/>

次に、次のようにバインディングを設定できます。

<Image Source="{Binding Link, Converter={StaticResource ImageConverter}}" />   
于 2012-06-18T10:20:09.150 に答える