Few days ago I faced a problem with printing in new Silverlight 4 RC. When you try to dynamically load image (in code behind) and print it, it doesn't work. Paper sheet is blank.
<Image x:Name="image" Stretch="None" />
image.Source = new BitmapImage(new Uri(imageUri, UriKind.RelativeOrAbsolute));
var pd = new PrintDocument();
pd.PrintPage += (s, args) =>
args.PageVisual = image;
What you need to do, is forced Silverlight engine to load that image before printing start. To accomplish that I proposed simply checking PixelWith value. Your code will ask about PixelWidth of image so it will have to be loaded.
BitmapImage bImage = new BitmapImage(new Uri(imageUri, UriKind.RelativeOrAbsolute));
image.Source = bImage;
InitControl(imageUri, movieUri, isLeft);
int w = bImage.PixelWidth;
int h = bImage.PixelHeight;