0

我正在使用 WCF 天气服务并接收 ID、描述和图像等天气信息。它返回如下:

<WeatherDescription>
    <WeatherID>1</WeatherID>
    <Description>Thunder Storms</Description>
    <PictureURL>
     http://ws.cdyne.com/WeatherWS/Images/thunderstorms.gif
    </PictureURL>
</WeatherDescription>

现在在 XAML 中,我在 dataGrid 中显示我的数据,如下所示:

<sdk:DataGridTextColumn Header="ID" Binding="{Binding WeatherID}" />

上面的绑定是服务的另一个函数,它返回一个 7 天的预报,但返回与天气描述相同的天气 ID。我在代码端创建了一个包含所有天气描述的数组,如下所示:

public partial class MainPage : UserControl
{
    //array of weather descriptions
    private WeatherDescription[] weatherInformation;

    WeatherSoapClient weatherClient = new WeatherSoapClient();

    public MainPage()
    {
        InitializeComponent();
        weatherClient.GetWeatherInformationCompleted += new EventHandler<GetWeatherInformationCompletedEventArgs>(weatherClient_GetWeatherInformationCompleted);
        weatherClient.GetWeatherInformationAsync();
    }

    void weatherClient_GetWeatherInformationCompleted(object sender, GetWeatherInformationCompletedEventArgs e)
    {
        weatherInformation = e.Result;
    }
}
  1. 我想要做的是创建一个转换器,该转换器从该列获取 ID,并使用天气描述中提供的 URL 将其转换为图像。

  2. 我知道 Silverlight 不支持 GIF,所以我想将该图像发送到将其转换为 JPG 的处理程序。

对于 Silverlight 和 C# 来说都是全新的,这是我真正遇到的两件事。提前感谢您的帮助!代码片段对我来说是最好的帮助,因为我还不懂很多 C#。

4

1 回答 1

0
  1. 对于转换器,您可以执行以下操作:

    <sdk:DataGrid>

    <sdk:DataGrid.Resources>
        <local:WeatherIdToImageConverter key="IdToImageConverter" />
    </sdk:DataGrid.Resources>
    ...
        <sdk:DataGridTemplateColumn>
           <sdk:CellTemplate>
               <DataTemplate>
                   <Image Source="{Binding WeatherID, Converter={StaticResource IdToImageConverter}}" />
                   ...
    
  2. 在您实施转换器时,我会使用 ImageTools 库 ( http://imagetools.codeplex.com/ ) 在 GIF 和 PNG 之间进行转换(PNG 的质量会比 JPEG 更好)。

于 2012-04-23T00:43:43.810 回答