C# 如何使用WCF服务在Silverlight数据网格中显示GIF图像?
我试图根据天气预报中天气WCF分配给当天的天气ID显示天气图标的图像。我正在datagrid中显示数据,并希望添加一个带有图标的新列。不幸的是,这些图标是我知道Silverlight不支持的GIF,所以如果有人能帮忙,那就太好了C# 如何使用WCF服务在Silverlight数据网格中显示GIF图像?,c#,wcf,silverlight,xaml,gif,C#,Wcf,Silverlight,Xaml,Gif,我试图根据天气预报中天气WCF分配给当天的天气ID显示天气图标的图像。我正在datagrid中显示数据,并希望添加一个带有图标的新列。不幸的是,这些图标是我知道Silverlight不支持的GIF,所以如果有人能帮忙,那就太好了 public partial class MainPage : UserControl { 创建一个图像数组以及和之关联的ID private WeatherDescription[] weatherInformation; WeatherSoap
public partial class MainPage : UserControl
{
创建一个图像数组以及和之关联的ID
private WeatherDescription[] weatherInformation;
WeatherSoapClient weatherClient = new WeatherSoapClient();
public MainPage()
{
InitializeComponent();
weatherClient.GetCityForecastByZIPCompleted += new EventHandler<GetCityForecastByZIPCompletedEventArgs>(weatherClient_GetCityForecastByZIPCompleted);
weatherClient.GetCityWeatherByZIPCompleted += new EventHandler<GetCityWeatherByZIPCompletedEventArgs>(weatherClient_GetCityWeatherByZIPCompleted);
weatherClient.GetWeatherInformationCompleted += new EventHandler<GetWeatherInformationCompletedEventArgs>(weatherClient_GetWeatherInformationCompleted);
weatherClient.GetWeatherInformationAsync();
}
这就是我设置数组WCF调用结果的地方
void weatherClient_GetWeatherInformationCompleted(object sender, GetWeatherInformationCompletedEventArgs e)
{
weatherInformation = e.Result;
}
void weatherClient_GetCityForecastByZIPCompleted(object sender, GetCityForecastByZIPCompletedEventArgs e)
{
this.dataGrid1.ItemsSource = e.Result.ForecastResult;
for (int i = 0; i < e.Result.ForecastResult.Length; i++)
{
if (i == 0)
{
e.Result.ForecastResult[i].Temperatures.DaytimeHigh += "°F";
e.Result.ForecastResult[i].ProbabilityOfPrecipiation.Daytime += "%";
}
else
{
e.Result.ForecastResult[i].Temperatures.DaytimeHigh += "°F";
e.Result.ForecastResult[i].Temperatures.MorningLow += "°F";
e.Result.ForecastResult[i].ProbabilityOfPrecipiation.Daytime += "%";
e.Result.ForecastResult[i].ProbabilityOfPrecipiation.Nighttime += "%";
}
}
}
void weatherClient_GetCityWeatherByZIPCompleted(object sender, GetCityWeatherByZIPCompletedEventArgs e)
{
this.textBlock1.Text = "City: " + e.Result.City + "\n";
this.textBlock1.Text += "State: " + e.Result.State + "\n";
this.textBlock1.Text += "Weather ID: " + e.Result.WeatherID + "\n";
this.textBlock1.Text += "Weather Station: " + e.Result.WeatherStationCity + "\n";
this.textBlock1.Text += "Temperature: " + e.Result.Temperature + "°F \n";
this.textBlock1.Text += "Description: " + e.Result.Description + "\n";
this.textBlock1.Text += "Pressure: " + e.Result.Pressure + "\n";
this.textBlock1.Text += "Relative Humidity: " + e.Result.RelativeHumidity + "% \n";
}
private void button1_Click(object sender, RoutedEventArgs e)
{
weatherClient.GetCityWeatherByZIPAsync(inputZip.Text);
weatherClient.GetCityForecastByZIPAsync(inputZip.Text);
}
}
}
如果有帮助的话,这就是我对dataGrid的标记
<sdk:DataGrid AutoGenerateColumns="False" Height="310" Margin="12,131,407,0" Name="dataGrid1" VerticalAlignment="Top" AlternatingRowBackground="#00010000">
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Header="Date" Binding="{Binding Date}" />
<sdk:DataGridTextColumn Header="ID" Binding="{Binding WeatherID}" />
<sdk:DataGridTextColumn Header="Description" Binding="{Binding Desciption}" />
<sdk:DataGridTemplateColumn Header="Temperature">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Temperatures.DaytimeHigh}" Name="DaytimeHigh" />
<TextBlock Text="{Binding Temperatures.MorningLow}" Name="MorningLow"/>
</StackPanel>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
<sdk:DataGridTemplateColumn Header="Probability of Precipitation">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding ProbabilityOfPrecipiation.Daytime}" Name="Daytime"/>
<TextBlock Text="{Binding ProbabilityOfPrecipiation.Nighttime}" Name="Nighttime"/>
</StackPanel>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
如果你需要更多的信息,请告诉我。我希望有人能提供帮助。Silverlight不支持GIF,因此您必须将其转换为jpg或png。我建议您只在服务器端执行一次 然后可以使用相对路径在模板列内的datagrid中显示图像
<Image x:Name="myImage" Source="../someImage.jpg" />
你的图像存储在哪里?您提到通过id引用它们。它们是否存储在数据库中?然后,您可以编写一个HTTP处理程序来加载图像或通过您的服务加载图像。那么,您的问题是什么?是关于GIF还是你的实施我不知道怎么做。第一个问题是在引用ID时在datagrid中显示图像。然后如何将gif转换为jpg?我实际上刚刚写了一篇更好的文章来尝试并帮助解决这个问题,所以这是指向这个问题的链接。如果这不能回答你的问题,请告诉我。我感谢你的帮助!