您的位置:首页 > 其它

快速浏览Silverlight3 Beta:使用SaveFileDialog保存到本地文件

2009-04-02 08:49 726 查看
在Silverlight3 Beta,提供了保存文件对话框,通过它我们可以很方便的将文本(包括图片等)信息保存到指定的本地文件上,当然这是要求一定权限的,所以在启用VS2008时请选择以“管理员身份”运行,即:



只有这样才不会在稍会的保存文件时,出现权限不足而无法保存的问题。

首先,我们的XAML文件内容如下:

<Grid x:Name="LayoutRoot" Background="AliceBlue">
<Grid.RowDefinitions>
<RowDefinition Height="250"/>
<RowDefinition Height="25"/>
<RowDefinition Height="25"/>
</Grid.RowDefinitions>
<TextBox Name="Msg" Grid.Row="0" Text="请输入内容" Width="400" Height="200" FontSize="16" />
<Button Name="SaveFile" Content=" 保 存 " Grid.Row="1" Click="SaveFileClick" FontSize="14" Width="200"/>
<TextBlock Name="FileName" Grid.Row="2" FontSize="14"/>
</Grid>

而相应的CS代码也非常简单:

private void SaveFileClick(object sender, RoutedEventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog()
{
DefaultExt = "txt",
Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*",
FilterIndex = 2
};
if (sfd.ShowDialog() == true)
{
FileName.Text = "文件名称:" + sfd.File.Name;
using (Stream stream = sfd.OpenFile())
{
Byte[] fileContent = System.Text.UTF8Encoding.UTF8.GetBytes(Msg.Text);
stream.Write(fileContent, 0, fileContent.Length);
stream.Close();
}
}
}

这样,我们就可以运行来看一下效果了:)



当输入结束后点击保存按钮时,系统会提示保存的文件位置,当点击确定后,上面TextBox中的内容就被保存到该文件中了。



保存文本时,显示被保存的文件名称。



不过当用户选定本地文件的时候,只能得到这个文件的stream实例,而不是这个文件的路径(通过引用File.FullName或File.DirectoryName时会报异常)。按官方的解释是:

这样的设计避免了提供一个打开任意路径的本地文件的功能,从而使Silverlight运行在一个更为安全的环境中。
好了,今天的内容就先到这里了。

源码下载,请点击这里
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息