Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在<;中绑定电话联系人;工具包:WP8中的LongListMultiSelector?_C#_Xaml_Windows Phone 8 - Fatal编程技术网

C# 如何在<;中绑定电话联系人;工具包:WP8中的LongListMultiSelector?

C# 如何在<;中绑定电话联系人;工具包:WP8中的LongListMultiSelector?,c#,xaml,windows-phone-8,C#,Xaml,Windows Phone 8,我想在LongListMultiSelector中显示我的电话联系人。之前我用一个列表框来显示电话联系人。。。我的实现是这样的: xaml 和C# private void SearchContacts\u单击(对象发送者,路由目标) { ContactResultsData.DataContext=null; Contacts cons=新联系人(); cons.SearchCompleted+=新事件处理程序(联系人\u SearchCompleted); } 无效联系人搜索已完成(对象

我想在LongListMultiSelector中显示我的电话联系人。之前我用一个列表框来显示电话联系人。。。我的实现是这样的: xaml


和C#

private void SearchContacts\u单击(对象发送者,路由目标)
{
ContactResultsData.DataContext=null;
Contacts cons=新联系人();
cons.SearchCompleted+=新事件处理程序(联系人\u SearchCompleted);
}
无效联系人搜索已完成(对象发件人、联系人搜索目标e)
{
尝试
{
ContactResultsData.DataContext=e.结果;
}
捕获(系统异常)
{
}
}
现在,不管列表框是什么,我还是想在一个LongListMultiSelector中显示它

我该怎么做

现在我使用的是视图模型

public partial class ContactsView : PhoneApplicationPage
    {
public ContactsViewModel()
        {
            var cons = new Microsoft.Phone.UserData.Contacts();
            cons.SearchAsync(String.Empty, FilterKind.None, null);
            cons.SearchCompleted += ContactsSearchCompleted;
        }
        private void ContactsSearchCompleted(object sender, ContactsSearchEventArgs e)
        {
            PhoneContacts = new ObservableCollection<Contact>(e.Results.OrderBy(c => c.DisplayName));

        }

        private ObservableCollection<Contact> _phoneContacts;
        public ObservableCollection<Contact> PhoneContacts
        {
            get { return _phoneContacts; }
            set
            {
                _phoneContacts = value;
                RaisePropertyChanged("PhoneContacts");
            }
        }
}
公共部分类联系人查看:电话应用程序页面
{
公共联系人查看模型()
{
var cons=new Microsoft.Phone.UserData.Contacts();
cons.SearchAsync(String.Empty,FilterKind.None,null);
cons.SearchCompleted+=联系人SearchCompleted;
}
私有无效联系人搜索已完成(对象发送方、联系人搜索目标e)
{
PhoneContacts=newobserveCollection(e.Results.OrderBy(c=>c.DisplayName));
}
私人可观察收集电话联系人;
公共可观察收集电话联系人
{
获取{return\u phoneContacts;}
设置
{
_phoneContacts=值;
RaisePropertyChanged(“电话联系人”);
}
}
}
如何将此viewModel绑定到LongListMultiSelector,以便可见ObservableCollection联系人数据? 如图所示。我想显示联系人详细信息,而不是邮件详细信息。

在大多数情况下,只要用phone:LongListSelector替换ListBox的所有实例就可以了。在许多情况下,不建议在ListBox上使用LongListSelector(因为出现了一些意外的功能),但它应该可以正常工作

<phone:LongListSelector ItemsSource="{Binding DataList}">
    <phone:LongListSelector.ItemTemplate>
        <DataTemplate/>
    </phone:LongListSelector.ItemTemmplate>
</phone:LongListSelector>

我修改了视图模型,如下所示:

public class ContactsViewModel : ViewModelBase
{

    public ContactsViewModel()
    {
        Contacts cons = new Contacts();
        cons.SearchAsync(String.Empty, FilterKind.None, null);
        cons.SearchCompleted += new EventHandler<ContactsSearchEventArgs>(Contacts_SearchCompleted);

    }

    void Contacts_SearchCompleted(object sender, ContactsSearchEventArgs e)
    {

        try
        {

            PhoneContactsList = new List<Contact>(e.Results.OrderBy(c => c.DisplayName));
            System.Diagnostics.Debug.WriteLine("PhoneContacts phone" + PhoneContactsList);

        }
        catch (System.Exception)
        {
            //That's okay, no results
        }

    }

    //--------------------------------
    private List<Contact> _phoneContactsList;
    public List<Contact> PhoneContactsList
    {
        get { return _phoneContactsList; }
        set
        {
            _phoneContactsList = value;
            RaisePropertyChanged("PhoneContactsList");
        }
    }
}
<toolkit:LongListMultiSelector x:Name="contactList" 
                                                Margin="0,14,-12,0"
                                                ItemsSource="{Binding PhoneContactsList}"
                                                LayoutMode="List"
                                                ItemTemplate="{StaticResource ContactItemTemplate}"
            />
 <DataTemplate x:Key="ContactItemTemplate">
            <StackPanel Margin="0,-14,0,24" >
                <TextBlock Text="{Binding Path=DisplayName, Mode=OneWay}" 
                                       Margin="0,0,0,-4"
                                       FontSize="{StaticResource PhoneFontSizeExtraLarge}" 
                                       FontFamily="{StaticResource PhoneFontFamilySemiLight}"/>

                <ListBox ItemsSource="{Binding Path=PhoneNumbers}" Height="60"  Margin="36,0,0,0">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="*"/>
                                </Grid.ColumnDefinitions>
                                <TextBlock Grid.Column="0" Text="{Binding Path=Kind, Mode=OneWay}" />
                                <TextBlock Grid.Column="1" Text=":  " />
                                <TextBlock Grid.Column="2" Text="{Binding Path=PhoneNumber, Mode=OneWay}" />
                            </Grid>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>

            </StackPanel>
        </DataTemplate>
public-class-ContactsViewModel:ViewModelBase
{
公共联系人查看模型()
{
Contacts cons=新联系人();
cons.SearchAsync(String.Empty,FilterKind.None,null);
cons.SearchCompleted+=新事件处理程序(联系人\u SearchCompleted);
}
无效联系人搜索已完成(对象发件人、联系人搜索目标e)
{
尝试
{
PhoneContactsList=新列表(e.Results.OrderBy(c=>c.DisplayName));
System.Diagnostics.Debug.WriteLine(“PhoneContacts phone”+PhoneContacts列表);
}
捕获(系统异常)
{
//没关系,没有结果
}
}
//--------------------------------
私人列表\u电话联系人列表;
公共列表电话联系人列表
{
获取{return\u phoneContactsList;}
设置
{
_phoneContactsList=值;
RaiseProperty已更改(“电话联系人列表”);
}
}
}
我使用的不是observablecollection,而是列表。 在xaml中,我将PhoneContactsList绑定到我的longlistmultiselector,如下所示:

public class ContactsViewModel : ViewModelBase
{

    public ContactsViewModel()
    {
        Contacts cons = new Contacts();
        cons.SearchAsync(String.Empty, FilterKind.None, null);
        cons.SearchCompleted += new EventHandler<ContactsSearchEventArgs>(Contacts_SearchCompleted);

    }

    void Contacts_SearchCompleted(object sender, ContactsSearchEventArgs e)
    {

        try
        {

            PhoneContactsList = new List<Contact>(e.Results.OrderBy(c => c.DisplayName));
            System.Diagnostics.Debug.WriteLine("PhoneContacts phone" + PhoneContactsList);

        }
        catch (System.Exception)
        {
            //That's okay, no results
        }

    }

    //--------------------------------
    private List<Contact> _phoneContactsList;
    public List<Contact> PhoneContactsList
    {
        get { return _phoneContactsList; }
        set
        {
            _phoneContactsList = value;
            RaisePropertyChanged("PhoneContactsList");
        }
    }
}
<toolkit:LongListMultiSelector x:Name="contactList" 
                                                Margin="0,14,-12,0"
                                                ItemsSource="{Binding PhoneContactsList}"
                                                LayoutMode="List"
                                                ItemTemplate="{StaticResource ContactItemTemplate}"
            />
 <DataTemplate x:Key="ContactItemTemplate">
            <StackPanel Margin="0,-14,0,24" >
                <TextBlock Text="{Binding Path=DisplayName, Mode=OneWay}" 
                                       Margin="0,0,0,-4"
                                       FontSize="{StaticResource PhoneFontSizeExtraLarge}" 
                                       FontFamily="{StaticResource PhoneFontFamilySemiLight}"/>

                <ListBox ItemsSource="{Binding Path=PhoneNumbers}" Height="60"  Margin="36,0,0,0">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="*"/>
                                </Grid.ColumnDefinitions>
                                <TextBlock Grid.Column="0" Text="{Binding Path=Kind, Mode=OneWay}" />
                                <TextBlock Grid.Column="1" Text=":  " />
                                <TextBlock Grid.Column="2" Text="{Binding Path=PhoneNumber, Mode=OneWay}" />
                            </Grid>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>

            </StackPanel>
        </DataTemplate>

其中ContactItemTemplate如下所示:

public class ContactsViewModel : ViewModelBase
{

    public ContactsViewModel()
    {
        Contacts cons = new Contacts();
        cons.SearchAsync(String.Empty, FilterKind.None, null);
        cons.SearchCompleted += new EventHandler<ContactsSearchEventArgs>(Contacts_SearchCompleted);

    }

    void Contacts_SearchCompleted(object sender, ContactsSearchEventArgs e)
    {

        try
        {

            PhoneContactsList = new List<Contact>(e.Results.OrderBy(c => c.DisplayName));
            System.Diagnostics.Debug.WriteLine("PhoneContacts phone" + PhoneContactsList);

        }
        catch (System.Exception)
        {
            //That's okay, no results
        }

    }

    //--------------------------------
    private List<Contact> _phoneContactsList;
    public List<Contact> PhoneContactsList
    {
        get { return _phoneContactsList; }
        set
        {
            _phoneContactsList = value;
            RaisePropertyChanged("PhoneContactsList");
        }
    }
}
<toolkit:LongListMultiSelector x:Name="contactList" 
                                                Margin="0,14,-12,0"
                                                ItemsSource="{Binding PhoneContactsList}"
                                                LayoutMode="List"
                                                ItemTemplate="{StaticResource ContactItemTemplate}"
            />
 <DataTemplate x:Key="ContactItemTemplate">
            <StackPanel Margin="0,-14,0,24" >
                <TextBlock Text="{Binding Path=DisplayName, Mode=OneWay}" 
                                       Margin="0,0,0,-4"
                                       FontSize="{StaticResource PhoneFontSizeExtraLarge}" 
                                       FontFamily="{StaticResource PhoneFontFamilySemiLight}"/>

                <ListBox ItemsSource="{Binding Path=PhoneNumbers}" Height="60"  Margin="36,0,0,0">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="Auto"/>
                                    <ColumnDefinition Width="*"/>
                                </Grid.ColumnDefinitions>
                                <TextBlock Grid.Column="0" Text="{Binding Path=Kind, Mode=OneWay}" />
                                <TextBlock Grid.Column="1" Text=":  " />
                                <TextBlock Grid.Column="2" Text="{Binding Path=PhoneNumber, Mode=OneWay}" />
                            </Grid>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>

            </StackPanel>
        </DataTemplate>


我已经修改了这个问题。现在我正在使用一个viwmodel和phonecontacts作为ObservableCollection。很抱歉,我似乎不知道问题仍然在哪里。到目前为止,您尝试了什么,您希望出现什么,它实际上在做什么?如果您想了解LongListSelector的更高级用法,请查看该链接。您好,我想查看照片中显示的联系人列表(我在问题中添加了该列表),但不想查看电子邮件详细信息,我想显示手机联系人的详细信息。使用longLisrmultiselect,我可以选择一些联系人,并将数据保存在手机内存中以备以后使用。