ContactPicker 클래스를 사용하여 응용 프로그램에 Windows 8 People App을 통합하고 있습니다. 버튼을 클릭하면 피플 앱이로드됩니다. 사용자가 친구를 선택하면 이름, 이미지 및 이메일 주소를 ListView에 표시하려고합니다.연락처 Picker 이메일 주소 얻기
이름과 이미지 표시에 문제가 없습니다. 표시되는 전자 메일 주소를 표시하는 대신 System.Collections.Generic.List`1 [System.String] 모든 솔루션 ??
IReadOnlyList<GetContactDetails> ConDetails;
public IReadOnlyList<GetContactDetails> ContactDetails
{
get { return ConDetails; }
set { ConDetails = value; }
}
List<GetContactDetails> Contact;
public List<GetContactDetails> SetContacts
{
get { return Contact; }
set { Contact = value; }
}
private async void Contacts_Click(object sender, RoutedEventArgs e)
{
SetContacts = new List<App1.GetContactDetails>();
var contactSelector = new Windows.ApplicationModel.Contacts.ContactPicker();
contactSelector.CommitButtonText = "Pick contact";
var SelectedContact = await contactSelector.PickMultipleContactsAsync();
foreach (var item in SelectedContact)
{
SetContacts.Add(new GetContactDetails(item));
}
ContactList.ItemsSource = SetContacts;
}
XAML :
<ListView x:Name="ContactList" ItemTemplate="{StaticResource contactTemplate}" HorizontalAlignment="Left" Height="271" VerticalAlignment="Top" Width="585"/>
<DataTemplate x:Key="contactTemplate">
<Grid Width="400" Height="200" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50"></ColumnDefinition>
<ColumnDefinition Width="350"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="75"></RowDefinition>
<RowDefinition Height="75"></RowDefinition>
<RowDefinition Height="75"></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Grid.Column="0" Grid.Row="0" Text="Name" FontSize="20" FontWeight="Bold"></TextBlock>
<TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding ContactName}" FontWeight="Bold"></TextBlock>
<TextBlock Grid.Column="0" Grid.Row="1" Text="Mail" FontSize="20" FontWeight="Bold"></TextBlock>
<TextBlock Grid.Column="1" Grid.Row="1" Text="{Binding ContactEmails}" FontSize="10" FontWeight="Bold"></TextBlock>
<!--<Image Height="100" Width="100" Grid.Column="1" Grid.Row="1" Source="{Binding ContactImage}" HorizontalAlignment="Left" VerticalAlignment="Center"></Image>-->
</Grid>
</DataTemplate>
GetContactDetails 클래스 : 코드가 ContactEmails에 정보를 추가하지 않는 것처럼
public class GetContactDetails
{
public string ContactName { get; private set; }
public BitmapImage ContactImage { get; private set; }
public Visibility CanShow { get; set; }
public List<string> PhoneNumbers { get; set; }
public List<string> ContactEmails { get; set; }
public GetContactDetails(ContactInformation c)
{
PhoneNumbers = new List<string>();
ContactEmails = new List<string>();
CanShow = Visibility.Visible;
ContactName = c.Name;
if (c.PhoneNumbers.Count > 0)
{
foreach (var item in c.PhoneNumbers)
{
PhoneNumbers.Add(item.Value);
}
}
else
{
CanShow = Visibility.Collapsed;
}
GetContactImage(c);
}
async void GetContactImage(ContactInformation Img)
{
var imgStream = await Img.GetThumbnailAsync();
ContactImage = new BitmapImage();
if (imgStream != null && imgStream.Size > 0)
{
ContactImage.SetSource(imgStream);
}
}
}
어디에서 ContactEmails 값을 설정합니까? 사용자가이 위치를 입력합니까? –
전자 메일 주소는 Windows 8 People 응용 프로그램에서 가져옵니다. 사용자는이 정보를 입력 할 수 없으며 세부 정보를보고 싶은 친구 만 선택할 수 있습니다. – user1951083
아마 뭔가를 놓치고 있습니다. 어딘가에 코드가 이메일 목록에 액세스하여 ContactEmails를 설정해야합니다. 너 어디에서 그런거야? –