When creating a custom Silverlight control you may want to enable a property that can be changed from binding, from straight XAML or via code. The following should allow you to do all of the above to change the source of an image in Silverlight for Windows Phone.
In the sub OnSourceUriChanged
you see a direct cast to ImageAnimation
. That should be the name of the control that you’re putting this property into. Mine happened to be ImageAnimation (which is a custom control I put together to reuse common Storyboards that I have created for use with images). Now that Mango is out the “Tap” event is exposed on images making them far easier to use (and more useful).
Public Property Source() As String
Get
Return DirectCast(GetValue(SourceProperty), String)
End Get
Set(value As String)
SetValue(SourceProperty, value)
End Set
End Property
Public Shared ReadOnly SourceProperty As DependencyProperty = DependencyProperty.Register("Source", GetType(String), GetType(ImageAnimation), New PropertyMetadata(Nothing, New PropertyChangedCallback(AddressOf OnSourceUriChanged)))
Private Shared Sub OnSourceUriChanged(d As DependencyObject, e As DependencyPropertyChangedEventArgs)
DirectCast(d, ImageAnimation).OnSourceUriChanged(e)
End Sub
Protected Overridable Sub OnSourceUriChanged(e As DependencyPropertyChangedEventArgs)
image.Source = New ImageSourceConverter().ConvertFromString(e.NewValue.ToString)
End Sub