Как получить значения объекта, используя свойство идентификатора объекта в C #

1

это мой первый опыт разработки приложений для Windows Phone 8. У меня есть проблема, о которой я упоминал ниже, не могли бы вы помочь мне разобраться в этом.

Я показываю данные из ActivityViewModel через привязку данных в Activities.xaml Когда пользователь нажимает на элемент активности, я посылаю ActivityID в ActivityDetails.xaml. Я пытаюсь вызвать объект, который я создал как AccountAction, используя ActivityID.

Как я могу получить значения объекта (ActivityImage, ActivityName, ActivityAmont...) с помощью ActivityID в ActivityDetails.xaml.cs?

ActivityViewModel:

public class ActivityViewModel
{
    public ObservableCollection<AccountAction> ActivityItemCollection { get; set; }

    public ActivityViewModel()
    {
        ActivityItemCollection = new ObservableCollection<AccountAction>();


        ActivityItemCollection.Add(new AccountAction()
        {
            ActivityID = "SP0001",
            ActivityImage = "/Images/Logos/e-bay.png"
            ActivityName = "E-Bay",
            ActivityAmount = "100,00",
            ActivityDate = "Today",
            ActivityHour = "11:49"
        });

       .
       .
       .

    }
}

Activities.xaml.cs

 private void StackPanel_Tap(object sender, System.Windows.Input.GestureEventArgs e)
    {
        var _ActivityID = Convert.ToString(((StackPanel)sender).Tag);
        NavigationService.Navigate(new Uri("/ActivityDetails.xaml?ActivityID=" + _ActivityID, UriKind.Relative));
    }

ActivityDetails.xaml.cs

 protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);

        string ActivityID = "";

        if (NavigationContext.QueryString.TryGetValue("ActivityID", out ActivityID))
        {
            ReferanceNumber.Text = ActivityID;

        }

    }
Теги:
visual-studio
observablecollection
data-binding
windows-phone-8

1 ответ

1
Лучший ответ
 protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
        string ActivityID;
        if (e.IsNavigationInitiator  && this.NavigationContext.QueryString.TryGetValue("ActivityID", out ActivityID))
        {
          ActivityID= int.Parse(ActivityID);

        }
    }

РЕДАКТИРОВАТЬ:

Вы можете получить данные, относящиеся к activid, используя linq

AccountAction result = ActivityItemCollection.FirstOrDefault(act=>act.ActivityID == ActivityID);

Затем вы можете получить значения объектов, такие как result.ActivityName

  • 0
    @efendi проверьте измененный ответ!
  • 0
    Спасибо, но у меня ActivityItemCollection не существует в текущем контексте ошибки. : /
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню