摘要:
.code {font-size:76%; font-family:Geneva Verdana;}【原文地址】Silverlight FlickR Example
【原文发表日期】25 April 08 11:23
在这个示例中,我将示范在Silverlight客户端通过一个非常简单的调用去访问FlickR的REST API。最终我们将得到一个应用程序,它看上去是这样的:
第一部分,定义部分Silverlight用户界面
第二部分,展示对本机的“打开文件”对话框的支持
第三部分,调用FlickR的服务并找到图片
第四部分,使用隔离存储(IsolatedStorage)在多次运行中保持某些本地设置的值
第五部分,为用户界面添加皮肤
同时欢迎你们获取完整的例子和示例文件。
第一部分,定义部分Silverlight用户界面
开始部分的创建,你可以回头看看我的这篇帖子End to End Silverlight Application post。在Blend里添加一个TextBox和一个Button到窗口中,并如下图所示摆放。
确认你在属性窗口中为它们取了有意义的名称,以便稍后我们以编程的方式访问它们。我给它们起的名字是searchTermTextBox和button。
把一张图片拖入窗口中,我们就有了操作的对象了。(你可以使用SilverlightFlickRDemoFiles压缩包中的cow.jpg)
确认你也为这张图片命名了……我起的名字是searchResultsImage
第二部分,本机的“打开文件”对话框
为了测试一下我们的排版,让我们添加一项功能,弹出“打开文件”的对话框并让它操作客户端的图片。这一点如今你已经可以通过Ajax\HTML轻易地实现。
在page.xaml中,添加一个Click事件处理器
<Button x:Name="button" Width="100" Height="50"
Content="Go"
Click="button_Click"
在page.xaml.cs文件中,实现这个按钮的click事件,调用“打开文件”的对话框。
private void button_Click(object sender, RoutedEventArgs e) { OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "JPEG Files (*.jpg;*.jpeg)|*.jpg;*.jpeg | All Files (*.*)|*.*";
ofd.FilterIndex = 1;
if (ofd.ShowDialog() == DialogResult.OK) {
Stream stream = ofd.SelectedFile.OpenRead();
BitmapImage bi = new BitmapImage();
bi.SetSource(stream);
searchResultsImage.Source = bi;
stream.Close();
}
}
这段代码会打开系统的“打开文件”对话框,允许用户选择某个磁盘上的文件。开发者只具有保存这个文件的权限(仅指保存到应用程序中,而非文件的实际路径)。注意我们是如何操作这张客户端图片的。
现在你可以上传一个文件到服务器,或者使用Isolated Storage将它存到本地。不过这已经有些超出了这个示例的范围了,我们要做的仅仅是在flickr中查找一张图片……
第三部分,调用FlickR的服务并找到图片
重头戏现在开始了。我们需要将查询关键字发送到FlickR REST API,并显示查询结果的图片。当用户点击图片时,我们能够显示出结果中的下一张图片。
首先我们需要调用FlickR REST API。为此你需要一个键值(key),你可以免费从FlickR获得……
接着我们要在Silverlight客户端调用这个REST API,让我们定义一个helper方法来完成它。
void LoadPhotos(string topic)
{
string apiKey = "<<get your own >>";
string secret = "<<get your own >>";
string url......[
阅读全文]