隔离存储(Isolate Store) 是一个虚拟的文件系统 . 它可用于保存本地(客户端文件)。下面是微软的一些解释:
虚拟文件系统根目录对于每个机器当前登陆用户不同的,它是一个隐藏的文件夹,存在于物理文件系统中. 每个application的不同标识将会使其映射到不同的文件夹中,也就是说,将分配给每个不同的application 一个属于它的虚拟文件系统. .NET Framework version 2.0中的文件夹节构和隐藏架构同样在.NET Framework for Silverlight中
也用到了.
虚拟文件系统根目录对于每个机器当前登陆用户不同的,它是一个隐藏的文件夹,存在于物理文件系统中. 每个application的不同标识将会使其映射到不同的文件夹中,也就是说,将分配给每个不同的application 一个属于它的虚拟文件系统. .NET Framework version 2.0中的文件夹节构和隐藏架构同样在.NET Framework for Silverlight中
也用到了.
而在silverlight开发中,允许我们使用Isolate Store(位于System.IO.IsolatedStorage名空间),其下有几个
主要的类如:
主要的类如:
IsolatedStorageSettings (以Dictionary<<(TKey,TValue)>> 键值对的方式来存储数据,本文DEMO的演示内容)
IsolatedStorageFile (返回一个包括路径和文件的虚拟区域,用于管理目录,文件等,会在下一篇中演示)
IsolatedStorageFileStream (以流的方式读写指定路径的文件,会在下一篇中演示)
下面就先演示一下IsolatedStorageSettings的使用方法:
假设我们有一个应用,它是一个本地邮件管理和发送程序(如OutLook等).而我们写完一封EMAIL时可能不会立即将
其发送出去,而是还生成一个Draft(草稿,以便日后进行编辑),当我们认为可以发送时才会去SEND。
IsolatedStorageFileStream (以流的方式读写指定路径的文件,会在下一篇中演示)
下面就先演示一下IsolatedStorageSettings的使用方法:
假设我们有一个应用,它是一个本地邮件管理和发送程序(如OutLook等).而我们写完一封EMAIL时可能不会立即将
其发送出去,而是还生成一个Draft(草稿,以便日后进行编辑),当我们认为可以发送时才会去SEND。
下面就是这个应用的一个原型,如下图:
我们可以在输入了相关信息之后,先将其保存为草稿. 当我们下次再运行这个应用时,做自动加载当前的草稿,以
便我们进行编辑操作.当工作完成之后,就可以将其发送到Server端. 如果认为内容不好,我们也可以从Isolate Store
区中将该项内容删除.
我们可以在输入了相关信息之后,先将其保存为草稿. 当我们下次再运行这个应用时,做自动加载当前的草稿,以
便我们进行编辑操作.当工作完成之后,就可以将其发送到Server端. 如果认为内容不好,我们也可以从Isolate Store
区中将该项内容删除.
下面就是它的page.xaml代码:
<
Grid
x:Name
="LayoutRoot"
Background
="AliceBlue"
>
< Grid.RowDeFinitions >
< RowDeFinition Height ="40" />
< RowDeFinition Height ="40" />
< RowDeFinition Height ="231" />
< RowDeFinition Height ="*" />
</ Grid.RowDeFinitions >
< Grid.ColumnDeFinitions >
< ColumnDeFinition Width ="122" />
< ColumnDeFinition Width ="*" />
</ Grid.ColumnDeFinitions >
< TextBlock Grid.Row ="0" Grid.Column ="0" Margin ="5,5,57,5" HorizontalAlignment ="Stretch" >
< Run Text ="收件人:" />
</ TextBlock >
< TextBox x:Name ="Recipient" Width ="200" Grid.Row ="0" Grid.Column ="1" HorizontalAlignment ="Left" Margin ="5,5" />
< TextBlock Grid.Row ="1" Grid.Column ="0" Margin ="5,5" HorizontalAlignment ="Stretch" >
< Run Text ="主 题:" />
</ TextBlock >
< TextBox x:Name ="Subject" Width ="200" Grid.Row ="1" Grid.Column ="1" HorizontalAlignment ="Left" Margin ="5,5" />
< TextBlock Grid.Row ="2" Grid.Column ="0" Margin ="5,36" HorizontalAlignment ="Stretch" >
< Run Text ="内 容:" />
</ TextBlock >
< TextBox x:Name ="Body" textwrapping ="Wrap" Grid.Row ="2" Grid.Column ="1" HorizontalAlignment ="Stretch" Margin ="5,8,5" Grid.RowSpan ="1" />
< StackPanel Grid.ColumnSpan ="2" Grid.Row ="3" Orientation ="Horizontal" Grid.Column ="0" HorizontalAlignment ="Stretch" VerticalAlignment ="Stretch" Margin ="8,23.5,64,8" >
< Button x:Name ="SavetoDraft" Margin ="5,5" Content =" 保存为草稿(本地) " Click ="SavetoDraft_Click" />
< Button x:Name ="SavetoServer" Margin ="5,5" Content =" 上传到服务器 " Click ="SavetoServer_Click" />
< Button x:Name ="DeleteDraft" Margin ="5,5" Content =" 删除当前草稿(本地) " Click ="DeleteDraft_Click" />
</ StackPanel >
</ Grid >
< Grid.RowDeFinitions >
< RowDeFinition Height ="40" />
< RowDeFinition Height ="40" />
< RowDeFinition Height ="231" />
< RowDeFinition Height ="*" />
</ Grid.RowDeFinitions >
< Grid.ColumnDeFinitions >
< ColumnDeFinition Width ="122" />
< ColumnDeFinition Width ="*" />
</ Grid.ColumnDeFinitions >
< TextBlock Grid.Row ="0" Grid.Column ="0" Margin ="5,5,57,5" HorizontalAlignment ="Stretch" >
< Run Text ="收件人:" />
</ TextBlock >
< TextBox x:Name ="Recipient" Width ="200" Grid.Row ="0" Grid.Column ="1" HorizontalAlignment ="Left" Margin ="5,5" />
< TextBlock Grid.Row ="1" Grid.Column ="0" Margin ="5,5" HorizontalAlignment ="Stretch" >
< Run Text ="主 题:" />
</ TextBlock >
< TextBox x:Name ="Subject" Width ="200" Grid.Row ="1" Grid.Column ="1" HorizontalAlignment ="Left" Margin ="5,5" />
< TextBlock Grid.Row ="2" Grid.Column ="0" Margin ="5,36" HorizontalAlignment ="Stretch" >
< Run Text ="内 容:" />
</ TextBlock >
< TextBox x:Name ="Body" textwrapping ="Wrap" Grid.Row ="2" Grid.Column ="1" HorizontalAlignment ="Stretch" Margin ="5,8,5" Grid.RowSpan ="1" />
< StackPanel Grid.ColumnSpan ="2" Grid.Row ="3" Orientation ="Horizontal" Grid.Column ="0" HorizontalAlignment ="Stretch" VerticalAlignment ="Stretch" Margin ="8,23.5,64,8" >
< Button x:Name ="SavetoDraft" Margin ="5,5" Content =" 保存为草稿(本地) " Click ="SavetoDraft_Click" />
< Button x:Name ="SavetoServer" Margin ="5,5" Content =" 上传到服务器 " Click ="SavetoServer_Click" />
< Button x:Name ="DeleteDraft" Margin ="5,5" Content =" 删除当前草稿(本地) " Click ="DeleteDraft_Click" />
</ StackPanel >
</ Grid >
public
partial
class
Page : UserControl
{
private IsolatedStorageSettings appSettings =
IsolatedStorageSettings.ApplicationSettings; // 获取当前应用(silverlight Application) IsolatedStorageSettings 实例,范围在当前应用
// IsolatedStorageSettings appSettings =
// IsolatedStorageSettings.SiteSettings; // 获取当前应用(silverlight Application) IsolatedStorageSettings 实例,范围在当前域
public Page()
{
InitializeComponent();
this .Loaded += new RoutedEventHandler(Page_Loaded);
}
void Page_Loaded( object sender, RoutedEventArgs e)
{
try
{
// 加载相应节点信息,首次运行时会报为空的错误
Recipient.Text = ( string ) appSettings[ " Recipient " ];
Subject.Text = ( string )appSettings[ " Subject " ];
Body.Text = ( string )appSettings[ " Body " ];
}
catch (System.Collections.Generic.KeyNotFoundException ex)
{
HtmlPage.Window.Alert(ex.Message);
}
}
private void SavetoDraft_Click( object sender, RoutedEventArgs e)
{
try
{ // 添加相应节点信息
appSettings.Add( " Recipient " , Recipient.Text);
appSettings.Add( " Subject " , Subject.Text);
appSettings.Add( " Body " , Body.Text);
HtmlPage.Window.Alert( " 已存入本地隔离存储区 " );
}
catch (ArgumentException ex)
{
HtmlPage.Window.Alert(ex.Message);
}
}
private void DeleteDraft_Click( object sender, RoutedEventArgs e)
{
try
{
// 移除相当节点信息
appSettings.Remove( " Recipient " );
appSettings.Remove( " Subject " );
appSettings.Remove( " Body " );
HtmlPage.Window.Alert( " 已从本地隔离存储区中删除该草稿 " );
}
catch (ArgumentException ex)
{
HtmlPage.Window.Alert(ex.Message);
}
}
private void SavetoServer_Click( object sender, RoutedEventArgs e)
{
// 创建EMAIL信息类,以此作为上传数据
EmailInfo emailInfo = new EmailInfo()
{
Recipientk__backingField = Recipient.Text,
Subjectk__backingField = Subject.Text,
Bodyk__backingField = Body.Text
};
EmailClient emailClient = new EmailClient();
// 调用WCF方法
emailClient.AcceptCompleted += new EventHandler < AcceptCompletedEventArgs > (email_AcceptCompleted);
emailClient.AcceptAsync(emailInfo);
}
void email_AcceptCompleted( object sender, AcceptCompletedEventArgs e)
{
if (e.Result)
{
HtmlPage.Window.Alert( " 上传成功 " );
}
else
{
HtmlPage.Window.Alert( " 上传失败 " );
}
}
}
{
private IsolatedStorageSettings appSettings =
IsolatedStorageSettings.ApplicationSettings; // 获取当前应用(silverlight Application) IsolatedStorageSettings 实例,范围在当前应用
// IsolatedStorageSettings appSettings =
// IsolatedStorageSettings.SiteSettings; // 获取当前应用(silverlight Application) IsolatedStorageSettings 实例,范围在当前域
public Page()
{
InitializeComponent();
this .Loaded += new RoutedEventHandler(Page_Loaded);
}
void Page_Loaded( object sender, RoutedEventArgs e)
{
try
{
// 加载相应节点信息,首次运行时会报为空的错误
Recipient.Text = ( string ) appSettings[ " Recipient " ];
Subject.Text = ( string )appSettings[ " Subject " ];
Body.Text = ( string )appSettings[ " Body " ];
}
catch (System.Collections.Generic.KeyNotFoundException ex)
{
HtmlPage.Window.Alert(ex.Message);
}
}
private void SavetoDraft_Click( object sender, RoutedEventArgs e)
{
try
{ // 添加相应节点信息
appSettings.Add( " Recipient " , Recipient.Text);
appSettings.Add( " Subject " , Subject.Text);
appSettings.Add( " Body " , Body.Text);
HtmlPage.Window.Alert( " 已存入本地隔离存储区 " );
}
catch (ArgumentException ex)
{
HtmlPage.Window.Alert(ex.Message);
}
}
private void DeleteDraft_Click( object sender, RoutedEventArgs e)
{
try
{
// 移除相当节点信息
appSettings.Remove( " Recipient " );
appSettings.Remove( " Subject " );
appSettings.Remove( " Body " );
HtmlPage.Window.Alert( " 已从本地隔离存储区中删除该草稿 " );
}
catch (ArgumentException ex)
{
HtmlPage.Window.Alert(ex.Message);
}
}
private void SavetoServer_Click( object sender, RoutedEventArgs e)
{
// 创建EMAIL信息类,以此作为上传数据
EmailInfo emailInfo = new EmailInfo()
{
Recipientk__backingField = Recipient.Text,
Subjectk__backingField = Subject.Text,
Bodyk__backingField = Body.Text
};
EmailClient emailClient = new EmailClient();
// 调用WCF方法
emailClient.AcceptCompleted += new EventHandler < AcceptCompletedEventArgs > (email_AcceptCompleted);
emailClient.AcceptAsync(emailInfo);
}
void email_AcceptCompleted( object sender, AcceptCompletedEventArgs e)
{
if (e.Result)
{
HtmlPage.Window.Alert( " 上传成功 " );
}
else
{
HtmlPage.Window.Alert( " 上传失败 " );
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。