Nano Hash - криптовалюты, майнинг, программирование

Передача объектов между классами в Windows Phone/C#

Я новичок в Windows Phone и C#, и мне нравится переход от Objective-C и Java.

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

    private void meetingList_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (meetingList.SelectedIndex != -1)
        {
            Meeting aMeeting = (Meeting)meetingList.SelectedItem;
            this.NavigationService.Navigate(new Uri("/MeetDetails.xaml", UriKind.Relative));
            ApplicationBar.IsVisible = true;
        }
    }

Как я могу передать свой объект собрания «aMeeting» в свой класс MeetDetails, чтобы я мог отображать все детали для пользователя.

Я знаю, что могу разбить его и передать все переменные из «aMeeting», используя что-то вроде этого:

this.NavigationService.Navigate(new Uri("/MeetDetails.xaml?Meeting=" +
            aMeeting.meetName + "&TheDate=" +
            aMeeting.meetDate, UriKind.Relative));

Есть что-то, что я пропустил? Есть ли альтернативные способы, которые вы, ребята, могли бы порекомендовать?

Большое спасибо, -Код

18.04.2012


Ответы:


1
         var t1 = App.Current as App;
         t1.SSIDToken = stData1SSID;
         t1.CSRFToken = stData1CSRF;

это работает очень хорошо, просто создайте нужные элементы в файле app.cs (вот это было:

общедоступная строка SSIDToken {получить; set;} общедоступная строка CSRToken {get; задавать;}

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

     var t1 = App.Current as App;
     thisisatextbox.Text = t1.SSIDToken;
     thisisalsoatextbox.Text = t1.CSRFToken;

Дополнительная информация; http://www.eugenedotnet.com/2011/07/passing-values-between-windows-phone-7-pages-current-context-of-application/

РЕДАКТИРОВАТЬ: после пары месяцев опыта заметил, что вы можете добавить

public static new App Current
{
    get { return Application.Current as App; }
}

В App.xaml (в общедоступном приложении класса), чтобы иметь возможность вызывать App.Current без необходимости объявлять его каждый раз!

Теперь вы можете использовать App.Current.CSRFToken = "" || строка CSRFTk = App.Current.CSRFToken;

19.04.2012

2

То, что вы опубликовали, является хорошим способом передачи простых данных о месте. Однако это становится проблемой, когда вам нужно передать сложный объект между страницами.

Рекомендуемый способ — использовать шаблон MVVM (из википедии и MSDN). Это дает вам возможность отделить представление от всего остального, используя привязку данных. Лучшие учебные пособия, которые я видел, — это просмотр видео на MSDN.

18.04.2012
  • Спасибо за ссылки gBanFill. Я начну их преодолевать. (видео довольно длинное). Есть ли что-то конкретное, на что вы можете мне указать, что показывает, как передать объект, как в Objective-C, или это не поддерживается в C#? На этой неделе у меня довольно мало времени, чтобы поэкспериментировать с новым шаблоном проектирования. 18.04.2012
  • Самый быстрый способ без изучения шаблона mvvm — это добавить свойство в класс приложения, которое вы можете настроить перед вызовом навигации, а затем получить при загрузке страницы. Я не знаю объектив-с, поэтому не могу с этим помочь. В поезде, поэтому не могу указать на конкретную часть видео. 18.04.2012
  • Спасибо gbanfill, я ценю ваш совет. 18.04.2012

  • 3

    Возможно, вы захотите рассмотреть класс менеджера со свойствами, которые могут хранить ваш текущий объект Meeting. Затем это будет установлено в вашем обработчике событий SelectionChanged, а затем доступно на вашей странице MeetDetails. Класс менеджера определен вне ваших страниц, поэтому к нему можно получить доступ со всех ваших страниц.

    18.04.2012
  • Привет, Пол, это метод, который я решил использовать, чтобы сэкономить время, потому что он очень прост. Но я не всегда хочу искать самое простое решение и никогда не изучать новые методы. Спасибо за ваш вклад. 18.04.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..