Как я могу передавать значения между страницами?(Телефон с операционной системой Виндоус) - PullRequest
2 голосов
/ 27 марта 2012

Я знаю, что могу передавать значения между страницами с помощью URI, например:

NavigationService.Navigate(
new Uri("/DestinationPage.xaml?parameter1=v1", UriKind.Relative)
);

Есть ли другие способы передачи значений между страницами?

Ответы [ 5 ]

4 голосов
/ 27 марта 2012

Вы можете сделать синглтон;). Вот пример:

    public class MySingleton
    {
            private static MySingleton _mInstance;

            public static MySingleton Instance
            {
                get { return _mInstance ?? (_mInstance = new MySingleton()); }
            }

        /// <summary>
        /// You can send values through this string.
        /// </summary>
        public string SomeString { get; set; }
    }

РЕДАКТИРОВАТЬ: Чтобы присвоить ему значение, вы можете сделать что-то вроде этого:

MySingleton.Instance.SomeString = "Text";
2 голосов
/ 27 марта 2012
            <Button Content="Next page" Grid.Column="1" Height="23" Tag="/NextPage.xaml"  HorizontalAlignment="Right" Margin="0,6,12,0" Name="btnViewQuestion" VerticalAlignment="Top" Width="100" />
2 голосов
/ 27 марта 2012

Вы можете передавать значения, используя IsolatedStorageSetting, вы должны быть осторожны при использовании IsolatedStorage, вы должны очистить его вручную, он не будет очищен, если вы не сделаете это или не удалите Приложение / Выключите эмулятор, IsolatedStorage Документация

2 голосов
/ 27 марта 2012

Кроме передачи строк в uri страницы и извлечения их с помощью NavigationContext, нет никакой опции «из коробки»!

Но вы всегда можете объявить открытые свойства в классе App, которые будут доступны для всех страниц!

2 голосов
/ 27 марта 2012

Вы можете использовать значение строки запроса, например

NavigationService.Navigate(new Uri("/MainPage.xaml?value=Hello%20World", UriKind.Relative); 

и значение может быть передано как

string value =  this.NavigationContext.QueryString["value"]; 
...