我是Xamarin平台的初学者,&试图以xamarin形式阅读联系人。甚至尝试使用Xamarin.Mobile,但它给出了很多错误。找到1个插件,即Xamarin.contacts another question 但没有给出相关的例子。请使用Xamarin.contacts为所有3个平台提供相关示例 在此先感谢:)
答案 0 :(得分:2)
请记住Xam.Plugin.Contacts目前处于alpha版本。
这是我的实施。请注意,尽管有类名,但它并不是真正的MVVM模式。我尽可能地简化了代码以帮助提高可读性。
<强> MainPage.xaml中强>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:Contacts"
x:Class="Contacts.MainPage">
<ContentPage.BindingContext>
<local:MainViewModel x:Name="ViewModel" />
</ContentPage.BindingContext>
<ListView ItemsSource="{ Binding Contacts }">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell Text="{ Binding DisplayName }"
Detail="{ Binding Nickname }" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ContentPage>
<强> MainViewModel.cs 强>
public class MainViewModel
{
public ObservableCollection<Plugin.Contacts.Abstractions.Contact> Contacts { get; private set; }
public MainViewModel()
{
this.Contacts = new ObservableCollection<Plugin.Contacts.Abstractions.Contact>();
ReloadContacts();
}
public void ReloadContacts()
{
// Device may request user permission to get contacts access.
var hasPermission = CrossContacts.Current.RequestPermission()
.GetAwaiter()
.GetResult();
if (hasPermission)
{
this.Contacts.Clear();
List<Plugin.Contacts.Abstractions.Contact> contacts = null;
CrossContacts.Current.PreferContactAggregation = false;
if (CrossContacts.Current.Contacts == null)
{
return;
}
contacts = CrossContacts.Current.Contacts.ToList();
foreach (var contact in contacts)
{
this.Contacts.Add(contact);
}
}
}
}
希望这有帮助。