【问题标题】:Retrieve contact numbers for list of names c# wp8检索姓名列表的联系人号码 c# wp8
【发布时间】:2014-08-24 03:29:46
【问题描述】:

编辑:新问题 - 为了清楚起见和新代码,请参阅 Selecting contacts in windows phone 8

谁投了反对票,非常感谢。很有建设性。

感谢 MSDN 和这里的支持,我得到了以下代码,它填充了一个联系人列表,并允许用户在将它们保存到 List 对象之前选择多个联系人。

但是,我现在想知道如何检索与检索到的每个姓名相关联的联系号码。我已经尝试过后续搜索,但我觉得我做错了,每次它都破坏了代码。

任何帮助将不胜感激,谢谢。

        private void showContacts(object sender, RoutedEventArgs e)
        {
            Contacts cons = new Contacts();

            //Identify the method that runs after the asynchronous search completes.
            cons.SearchCompleted += new EventHandler<ContactsSearchEventArgs>(Contacts_SearchCompleted);

            //Start the asynchronous search.
            cons.SearchAsync(String.Empty, FilterKind.None, "Contacts Test #1");
        }

        void Contacts_SearchCompleted(object sender, ContactsSearchEventArgs e)
        {
            //Do something with the results.
            MessageBox.Show(e.Results.Count().ToString());
            try
            {
                //Bind the results to the user interface.
                ContactResultsData.DataContext = e.Results;
            }
            catch (System.Exception)
            {
                //No results
            }

            if (ContactResultsData.Items.Any())
            {
                ContactResultsLabel.Text = "results";
            }
            else
            {
                ContactResultsLabel.Text = "no results";
            }
        }

        public void saveContacts(object sender, RoutedEventArgs e)
        {
            String strItem;

            List<string> listOfNames = new List<string>(); 

            foreach (Object selecteditem in ContactResultsData.SelectedItems)
            {
                //MessageBox.Show(selecteditem.ToString());
                strItem = selecteditem as String;
                ContactResultsLabel.Text = strItem;

                listOfNames.Add(strItem);

                //System.Diagnostics.Debug.WriteLine(strItem);
                //MessageBox.Show("Saving " + strItem);
            }
        }
    }
}

【问题讨论】:

  • 请显示足够简洁的代码以简化您的问题
  • 我删除了一些多余的代码。剩下的 1.) 搜索所有联系人 2.) 将结果数据绑定到 XAML UI 3.) 创建名称列表 希望这会有所帮助。我现在正在尝试获取与每个联系人关联的号码。你能帮忙吗??谢谢你:)
  • King King,如果您要发表评论,请具有建设性。我已尽我所能将代码减少到最低限度。我已经尽可能清楚地提出了我的问题。

标签: c# linq xaml windows-phone-8


【解决方案1】:

使用 var 代替 object

我明白你的要求,但我不明白你的代码,无论如何

我只给出一个键,例如 ContactResultsData.SelectedItems 是否是您的数据库值,然后尝试这种方式

foreach (var selecteditem in ContactResultsData.SelectedItems)
            {
                //MessageBox.Show(selecteditem.ToString());

                ContactResultsLabel.Text = selecteditem.Name;//The Name is ContactResultsData.SelectedItems return Column Field name
                ContactNumberResult.Text = selecteditem.Number;//The Name is ContactResultsData.SelectedItems return Column Field name

                listOfNames.Add(strItem);

                //System.Diagnostics.Debug.WriteLine(strItem);
                //MessageBox.Show("Saving " + strItem);
            }

【讨论】:

  • 谢谢。但是,这会返回错误“对象不包含名称的定义”,这同样适用于数字。我要做的就是在列表中显示联系人,显示姓名,然后存储每个选定联系人的姓名和号码。
  • 你好,这就像一个键,那个名字和数字的意思是,你的列名
  • 对不起,Ramesh,我一定是遗漏了什么。我不知道如何处理这两条线? selecteditem 的唯一值似乎是列表框中显示的联系人姓名。
  • 没关系。 ContactResultsData.SelectedItems 是返回联系人号码和联系人姓名?或者现在告诉我 ContactResultsData.SelectedItems 什么返回?
  • ContactResultsData.SelectedItems 仅返回名称 - 这些名称显示在列表框中。 selecteditem 变量是指在列表框中选择的项目本身 - 我相信这是我们遇到问题的地方!当我做 MessageBox.Show(selecteditem.ToString());它只给出名字谢谢你的帮助
【解决方案2】:

考虑这个为Group Contacts 应用程序实现的示例:

XAML:

<HyperlinkButton x:Name="CompanyButton" Content="{Binding ElementName=grid, Path=DataContext.SelectedContact.JobInfo, Converter={StaticResource WorkToTextConverter}}" Visibility="{Binding ElementName=grid, Path=DataContext.SelectedContact.JobInfo, Converter={StaticResource WorkToVisibilityConverter}}" IsEnabled="{Binding ElementName=grid, Path=DataContext.SelectedContact.Phones, Converter={StaticResource WorkPhoneExistsConverter}}"/>
<HyperlinkButton x:Name="MobileButton"  Content="Mobile"    Visibility="{Binding ElementName=grid, Path=DataContext.SelectedContact.Phones, Converter={StaticResource MobileToVisibilityConverter}}"/>
<HyperlinkButton x:Name="MessageButton" Content="Message"   Visibility="{Binding ElementName=grid, Path=DataContext.SelectedContact.Phones, Converter={StaticResource MobileToVisibilityConverter}}"/>
<HyperlinkButton x:Name="EmailButton"   Content="Email"     Visibility="{Binding ElementName=grid, Path=DataContext.SelectedContact.Emails, Converter={StaticResource EmailsToVisibilityConverter}}" />

。 .

代码:

private void Call(object e)
{
    ContactPhone phone = null;

    var kind = e as string;

    switch (kind)
    {
        case "Mobile":
            {
                phone = SelectedContact.Phones.Where(p => p.Kind == ContactPhoneKind.Mobile).FirstOrDefault();
                break;
            }

        case "Work":
            {
                phone = SelectedContact.Phones.Where(p => p.Kind == ContactPhoneKind.Work).FirstOrDefault();
                break;
            }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    相关资源
    最近更新 更多