【问题标题】:How to get object values using object ID property in C#如何在 C# 中使用对象 ID 属性获取对象值
【发布时间】:2014-05-24 17:15:30
【问题描述】:

这是我在 windows phone 8 应用程序开发方面的第一次体验。 我有一个问题,我在下面提到,请您帮我解决一下。

我通过 Activities.xaml 中的数据绑定显示来自 ActivityViewModel 的数据 当用户点击活动项目时,我将 ActivityID 发送到 ActivityDetails.xaml。 我正在尝试使用 ActivityID 调用我创建为 AccountAction 的对象。

如何使用 ActivityDetails.xaml.cs 中的 ActivityID 获取对象值(ActivityImage、ActivityName、ActivityAmont ...)?

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"
        });

       .
       .
       .

    }
}

Activity.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;

        }

    }

【问题讨论】:

    标签: c# visual-studio windows-phone-8 data-binding observablecollection


    【解决方案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);
    
            }
        }
    

    编辑:

    可以通过linq获取activityid相关的数据

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

    然后你可以得到像result.ActivityName这样的对象值

    【讨论】:

    • @efendi 检查修改后的答案!
    • 谢谢,但我得到 ActivityItemCollection 在当前上下文中不存在错误。 ://
    • @efendi 你需要创建viewmodel的对象然后这样做,ViewModel vm = new ViewModel(), vm.ActivityItemCollection..FirstOrDefault(act=>act.ActivityID == ActivityID);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 2016-09-27
    • 2012-09-15
    相关资源
    最近更新 更多