Информация
Проще говоря, я пытаюсь создать приложение, отображающее контакты для пользователя.WP8.1 C# Binding Contact Image
Я тоже программист-самоучка, поэтому у меня есть опыт программирования в некоторых аспектах, но я относительно новичок в привязке данных в целом.
Для начала у меня есть элемент управления ListView, в котором есть привязка изображения.
<ListView x:Name="ContactsView" ItemsSource="{Binding}">
<ListView.ItemTemplate>
<DataTemplate>
<Image x:Name="ContactImage" Source="{Binding Converter={StaticResource ContactPictureConverter}, Mode=OneWay}" Height="100" Width="100" Margin="0,0,0,0"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
У меня также есть конвертер, который получает IRandomAccessStream Контактного изображения и возвращает его в качестве BitmapImage. Если изображение не найдено (исключение), конвертер вернет изображение по умолчанию для контактов.
public class ContactPictureConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string culture)
{
Contact c = value as Contact;
try
{
return GetImage(c).Result;
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
return @"Images/default.jpg";
}
async Task<BitmapImage> GetImage(Contact con)
{
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.DecodePixelHeight = 100;
bitmapImage.DecodePixelWidth = 100;
using (IRandomAccessStream fileStream = await con.Thumbnail.OpenReadAsync())
{
await bitmapImage.SetSourceAsync(fileStream);
}
return bitmapImage;
}
public object ConvertBack(object value, Type targetType, object parameter, string culture)
{
throw new NotImplementedException();
}
}
Дополнительная информация
Приложение устанавливается на Windows Phone 8.1 WinRT.
Чтобы получить контакты, я использую ContactStore.
IReadOnlyList<Contact> contacts; //Global Declaration
ContactStore store = await ContactManager.RequestStoreAsync();
contacts = await store.FindContactsAsync();
ContactsView.ItemsSource = contacts;
Проблема
Каждый контакт возвращается контакт образа по умолчанию (это означает некоторое исключение произошло при попытке получить изображение контакта). Это не должно происходить, поскольку у большинства моих контактов есть связанные с ними изображения.
Вопрос
Как я должен получить изображение контакта и связать, что графический элемент управления внутри ListView для Windows Phone 8.1?
способны retrive одно изображения и просто установить его в качестве источника изображения Вы ? Также не делайте ваш код синхронным - лучше прочитайте [эту статью] (http://msdn.microsoft.com/en-us/magazine/dn605875.aspx), также [этот ответ] (http://stackoverflow.com/a/26150727/2681948) может немного помочь. – Romasz