WP7 сохраняет несколько записей в разных строках из изолированного хранилища - PullRequest
0 голосов
/ 17 февраля 2011

Я беру информацию из формы, сохраняю ее в изолированном хранилище и строю список различных записей на отдельной странице.Я могу отобразить текст первой записи данных, но просто не могу понять, как продолжать хранить их в том же файле.

Это моя страница формы:

        var multipleStorage = IsolatedStorageFile.GetUserStoreForApplication();
        string multipleFile = "multipleFile.txt";
        using (var file = multipleStorage.OpenFile(multipleFile, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write))
        {

            using (var writer = new StreamWriter(file))
            {
                writer.Write(nameTextBox.Text + ", " + dunsTextBox.Text + ", " + typeCheck + ", " + resellerCheck + System.Environment.NewLine);
            }
        }

Иэто моя страница получения:

    private void resultTextBlock_Loaded(object sender, RoutedEventArgs e)
    {
        using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
        {
            using (StreamReader sr = new StreamReader(store.OpenFile("multipleFile.txt", FileMode.Open, FileAccess.Read)))
            {
                resultTextBlock.Text = sr.ReadToEnd();

            }
        }
    }

Ответы [ 2 ]

1 голос
/ 17 февраля 2011

Если вы пытаетесь добавить в файл, вам нужно использовать свойство System.IO.FileMode.Append.

 var multipleStorage = IsolatedStorageFile.GetUserStoreForApplication();
    string multipleFile = "multipleFile.txt";
    using (var file = multipleStorage.OpenFile(multipleFile, System.IO.FileMode.Append, System.IO.FileAccess.Write))
    {

        using (var writer = new StreamWriter(file))
        {
            writer.Write(nameTextBox.Text + ", " + dunsTextBox.Text + ", " + typeCheck + ", " + resellerCheck + System.Environment.NewLine);
        }
    }
1 голос
/ 17 февраля 2011

Это не очень хорошее использование IsolatedStorage.IsolatedStorage предназначен для сохранения информации после выхода из приложения.Таким образом, сохранение информации на диск может занять очень много времени.

Лучшим способом сделать это было бы 1:. Иметь глобальный объект / класс / и т. Д.Например, в App.xaml.cs есть объект типа:

public static Dictionary<string,object> myPageContextObjects;

, и на своей странице добавьте элементы, которые необходимо передать:

App.myPageContextObjects.Add("nameTextBox.Text",nameTextBox.Text);
...

Или 2:, вы можете использовать метод строки запроса.При переходе на новую страницу добавьте информацию в URI.Например,

NavigationService.Navigate(new URI("mypage.xaml" + "?nameTextBox.Text=" + nameTextBox.Text + "&dunsTextBox.Text=" + dunsTextBox.Text....) ).

Когда вы находитесь на новой странице, перегрузите метод OnNavigatedTo для доступа к строке.

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
        string selected = String.Empty;

        //check to see if the selected parameter was passed.
        if (NavigationContext.QueryString.ContainsKey("selected"))
        {
            //get the selected parameter off the query string from MainPage.
            selected = NavigationContext.QueryString["selected"];
        }
}

Ранее я сделал быстрое решение, которое демонстрирует простой примерПередача информации по страницам.Вы можете скачать его здесь: http://dl.dropbox.com/u/129101/Panorama_querystring.zip

...