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

您不能以这种方式绑定到 URL,因为 String/Uri 不是 Image.Source 属性的有效值。如果在 xaml 中设置了常量 URL,则当编译器生成的代码获取 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 回答