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

  • 常规讨论

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


        只有这样才不会在稍会的保存文件时,出现权限不足而无法保存的问题。
        
        首先,我们的XAML文件内容如下:
        


    Code highlighting produced by Actipro CodeHighlighter (freeware)
    http://www.CodeHighlighter.com/

    --><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代码也非常简单:
        


    Code highlighting produced by Actipro CodeHighlighter (freeware)
    http://www.CodeHighlighter.com/

    -->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.FullNameFile.DirectoryName时会报异常)。按官方的解释是:


    Code highlighting produced by Actipro CodeHighlighter (freeware)
    http://www.CodeHighlighter.com/

    -->

        这样的设计避免了提供一个打开任意路径的本地文件的功能,从而使Silverlight运行在一个更为安全的

    环境中。


         好了,今天的内容就先到这里了。
        
         源码下载,请点击这里
        
        
         原文链接:http://www.cnblogs.com/daizhj/archive/2009/04/01/1427414.html

        

    2009年5月27日 5:38