尽管Silverlight官方网站上都明确指出:出于安全原因,Silverlight不能访问本地文件系统。但是在Silverlight 2.0中有一个例外,就能通过OpenFileDialog来访问本地文件。
代码如下:
public void Button1_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);
Image img = new Image();
img.Source = bi;
bd.Child = img;
stream.Close();
}
}
其中,bd是一个Border控件,Button1_Click是一个按钮的Click事件处理程序。
使用起来和WinForm的OpenFileDialog差不多,这里就不详细讲解了。但要指出的一点是,根据Jeff Prosise的博客上的说法,这里我们本可以不用Border控件,而直接使用Image控件来实现,但是实验后发现,如果Image不动态添加,无法正确显示图像文件,不知道是不是Silverlight2的Bug,也有可能是我哪里没有设置正确,如果哪位兄弟觉得可以实现,请联系我。
演示代码下载地址为http://files.cnblogs.com/tonyqus/Silverlight2OpenFileDialog.rar
My blog:
http://blog.csdn.net/dotfun
http://dotfun.cnblogs.com
My contact:
QQ:372900288
E-mail:372900288@qq.com
msn:sellnet007@hotmail.com