检索姓名列表c#wp8的联系电话

检索姓名列表c#wp8的联系电话,c#,linq,xaml,windows-phone-8,C#,Linq,Xaml,Windows Phone 8,编辑:新问题-为了清晰和新代码,请参见 不管是谁投了反对票,非常感谢。非常有建设性 多亏了MSDN和此处的支持,我得到了以下代码,它填充了联系人列表,并允许用户在将联系人保存到列表对象之前选择多个联系人 但是,我现在想知道如何检索与检索到的每个姓名相关联的联系人号码。我尝试过后续的搜索,但我觉得我做得不对,每次它都会破坏代码 任何帮助都将不胜感激,谢谢 private void showContacts(object sender, RoutedEventArgs e)

编辑:新问题-为了清晰和新代码,请参见

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

多亏了MSDN和此处的支持,我得到了以下代码,它填充了联系人列表,并允许用户在将联系人保存到列表对象之前选择多个联系人

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

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

        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);
            }
        }
    }
}
private void showContacts(对象发送者、路由目标)
{
Contacts cons=新联系人();
//标识异步搜索完成后运行的方法。
cons.SearchCompleted+=新事件处理程序(联系人\u SearchCompleted);
//启动异步搜索。
cons.SearchAsync(String.Empty,FilterKind.None,“Contacts Test#1”);
}
无效联系人搜索已完成(对象发件人、联系人搜索目标e)
{
//对结果做点什么。
Show(例如Results.Count().ToString());
尝试
{
//将结果绑定到用户界面。
ContactResultsData.DataContext=e.结果;
}
捕获(系统异常)
{
//没有结果
}
if(ContactResultsData.Items.Any())
{
ContactResultsLabel.Text=“结果”;
}
其他的
{
ContactResultsLabel.Text=“无结果”;
}
}
public void saveContacts(对象发送者、路由目标)
{
弦纹;
List listOfNames=新列表();
foreach(ContactResultsData.SelectedItems中的对象selecteditem)
{
//Show(selecteditem.ToString());
strItem=选择editem作为字符串;
ContactResultsLabel.Text=strItem;
名称列表。添加(strItem);
//系统。诊断。调试。写入线(strItem);
//MessageBox.Show(“保存”+strItem);
}
}
}
}

使用变量而不是对象

我理解你的要求,但无论如何我不理解你的代码

我只给一个键,比如如果
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);
            }

考虑以下为应用程序实现的示例:

XAML:


请展示足够简洁的代码来简化您的问题。我已经删除了一些多余的代码。剩下的内容1.)搜索所有联系人2.)将结果数据绑定到XAML UI 3.)创建姓名列表,希望这有所帮助。我现在正在尝试获取与每个联系人相关的号码。你能帮忙吗??谢谢:)国王,如果你要发表评论,请有建设性。我已经尽了最大努力将代码减少到最低限度。我已经尽可能清楚地问了我的问题。谢谢你。但是,这将返回错误“对象不包含名称的定义”,这同样适用于数字。我所要做的就是在列表中显示联系人,显示姓名,然后存储每个选定联系人的姓名和号码。您好,这就像一个键,这个姓名和号码意味着,您的列名对不起,拉梅什,我一定是遗漏了什么。我不知道怎么处理这两条线?selecteditem的唯一值似乎是列表框中显示的联系人姓名。没关系。ContactResultsData.SelectedItems是返回的联系人号码和联系人姓名?或者现在告诉我ContactResultsData.SelectedItems返回什么?ContactResultsData.SelectedItems只返回名称-这些名称显示在列表框中。selecteditem变量指的是列表框本身所选的项目-我相信这就是我们遇到问题的地方!!当我执行MessageBox.Show(选择editem.ToString())时;它只给出了一个名字谢谢你的帮助
<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;
            }
}