Sintaxe do DataTemplate no ListBox com XAML
Olá pessoal, muitos devs me pedem uma forma de customizar a sintaxe para exibir dados nos controles ListBox, ComboBox no silverlight e windows phone. Na verdade, vc tem que customizar o XAML, então aqui está um exemplo do XAML:
<ListBox Name="lstDados" Width="200" Height="250">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="{Binding ImageName, Converter={StaticResource localImageConverter}}" Margin="2"/>
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding Title}" FontSize="20"/>
<TextBlock Text="{Binding Author}"/>
<TextBlock Text="{Binding Language}"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
O Converter é uma classe que captura o local das imagens que está na app asp.net (host), sendo:
public class ImageConverter:IValueConverter
{
private string baseUri = "http://localhost:5155/images/";
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null)
{
Uri imageUri = new Uri(baseUri + value);
return new BitmapImage(imageUri);
}
else
return "";
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
Boa sorte e se divirta com o layout que só a imaginação é o limite :)