Windows phone 7 从独立存储导航到xaml页面

Windows phone 7 从独立存储导航到xaml页面,windows-phone-7,xaml,navigation,isolatedstorage,Windows Phone 7,Xaml,Navigation,Isolatedstorage,我想知道是否有人以前做过或尝试过这样做。我想从当前页面导航到生成并存储在独立存储上的页面 可能吗 我已经找到了一种生成xaml代码的方法,并且正在生成xaml.cs文件,但是我似乎找不到一种导航到隔离存储中新创建和现有文件的方法。 我正在使用“isostore”URI模式,但它在根框架_NavigationFailed中引发异常: [System.InvalidOperationException]={“在位置'/isostore;/screenTest.XAML.''未找到XAML。”。先谢谢

我想知道是否有人以前做过或尝试过这样做。我想从当前页面导航到生成并存储在独立存储上的页面

可能吗

我已经找到了一种生成xaml代码的方法,并且正在生成xaml.cs文件,但是我似乎找不到一种导航到隔离存储中新创建和现有文件的方法。 我正在使用“isostore”URI模式,但它在根框架_NavigationFailed中引发异常: [System.InvalidOperationException]={“在位置'/isostore;/screenTest.XAML.''未找到XAML。”。先谢谢你

致以最良好的祝愿

Cipri

公共主页()
{
初始化组件();
this.Loaded+=新的RoutedEventHandler(主页面_-Loaded);
}
已加载无效主页(对象发送器、路由目标)
{
字符串用户名;
IsolatedStorageSettings.ApplicationSettings.TryGetValue(“用户名”,out用户名);
如果(!string.IsNullOrEmpty(用户名))
{
txtUserName.Text=用户名;
txtPassword.Focus();
}
其他的
txtUserName.Focus();
}
私有void btnLogin\u单击(对象发送者,路由目标e)
{
IsolatedStorageSettings.ApplicationSettings[“UserName”]=txtUserName.Text;
}

我认为最接近的方法是:

  • 将用户控件(而不是页面)存储在独立存储中
  • 使用
    XamlReader加载它们。加载
  • 将加载的UserControl插入当前页面中
缺点:

  • 您可以忘记代码隐藏文件,因为您无法编译它。你必须找到另一种方式把这些事件联系起来。我建议采用MVVM方法,绑定操作并对每个用户控件使用相同的viewmodel
  • 您没有使用NavigationService,因此必须处理导航内容(后退按钮和应用程序在逻辑删除后恢复)

这是我目前的做法。为了能够使用默认的导航系统,我试图重新分解所有内容。这种方法的问题是,当使用DatePicker之类的控件时,默认情况下会导航到datePickerPage,当您从该页面返回时,它可能会变得非常烦人。即使我恢复了最后一个状态,我也无法与页面交互。谢谢你的帮助,到时候我会尝试更多。:)
public MainPage()
{
    InitializeComponent();
    this.Loaded += new RoutedEventHandler(MainPage_Loaded);
}

void MainPage_Loaded(object sender, RoutedEventArgs e)
{
    string UserName;

    IsolatedStorageSettings.ApplicationSettings.TryGetValue<string>("UserName", out UserName);
    if (!string.IsNullOrEmpty(UserName))
    {
        txtUserName.Text = UserName;
        txtPassword.Focus();
    }

    else
        txtUserName.Focus();
}

private void btnLogin_Click(object sender, RoutedEventArgs e)
{
    IsolatedStorageSettings.ApplicationSettings["UserName"] = txtUserName.Text;
}