I was exploring the Lync APIs after installing Lync
SDK on my machine and as a curiosity tried to display the users communicator /
Lync Image in custom control.
To get the following example working – you will need
to install the Lync SDK or add the references of Lync APIs to your project.
Lync SDK can be downloaded here ,
after this – add the references from location [%root%]\Program Files
(x86)\Microsoft Lync\SDK\Assemblies\Desktop\Microsoft.LyncModel.dll to your
project.
I created one sample Silverlight project where I took Silverlight
image control and tried to provide the source. This control takes source as
either full path of image or you can assign the BitMap Imag stream.
I created one entity class named – UserEntity which
holds BitMapImage as a property.
public class UserEntity
{
public BitmapImage
UserImage { get; set;
}
}
Here is the xaml for Silverlight control , Binding is
added as BitMapImage stream
<Image Name="userImage" Source="{Binding Path=UserImage}" Margin="2,2,2,2" Height="40" Width="40"></Image>
Now the function to get user image
public partial class MainPage : UserControl
{
List<UserEntity>
allUsers = new List<UserEntity>();
LyncClient client;
public MainPage()
{
InitializeComponent();
client = LyncClient.GetClient();
UserEntity userObjet = new UserEntity();
if (client != null)
{
ContactManager cManager = client.ContactManager;
if
(cManager != null)
{
Contact
contact = cManager.GetContactByUri("useremail@domain.com");
if (contact
!= null)
{
List<ContactInformationType> ciList = new List<ContactInformationType>();
ciList.Add(ContactInformationType.Photo);
IDictionary<ContactInformationType, object>
dic = null;
dic =
contact.GetContactInformation(ciList);
if (dic != null)
{
Stream
photoStream = dic[ContactInformationType.Photo]
as Stream;
if
(photoStream != null)
{
BitmapImage
userImageBitMap = new BitmapImage();
userImageBitMap.SetSource(photoStream);
userObjet.UserImage = userImageBitMap;
}
}
}
}
}
allUsers.Add(userObjet);
if (allUsers != null && allUsers.Count > 0)
{
userImage.ItemsSource = allUsers;
}
}