Click here to Skip to main content
Email Password   helpLost your password?

Screen Capture 1

Introduction

A few days ago, I posted an article about creating a Silverlight Carousel control, which you can read here. In this article, I'll create a new carousel control which can be used to play video or audio. I named it VideoCarousel. The VideoCarousel is very similar to the Carousel except it can play video or audio. If you have tried the Carousel control, maybe you already know the Carousel has a Panel to display the user selected picture (with title). In VideoCarousel, the Panel is replaced by a video player control. If you want to know how the Carousel works, you may need to read this article.

You may use the VideoCarousel control as a video player in your web page. It supports dynamic add/remove of media (video or audio) info to its collection. The media info can include a picture (you can capture a frame from the film), a URI where the media is located, a title, the name of the director, the name of the main actors, and the name of the producer.

When the user moves the mouse over a CarouselItem, the media info will appear. When the user selects a CarouselItem, the selected video picture will appear in the selected item panel and the media will be auto buffered. If the media is ready, the user can play it, or if you set the AutoPlay property to true, the media will auto play. The carousel menu auto-disappears when the media is playing.

Display media info when mouse over:

Display media info when mouse over

The carousel hides when a video is playing:

The carousel hide when video playing

Background

I have created a Silverlight V2 control named Carousel which can display a collection of pictures in an interactive carousel. I liked the control, so I made some upgrades for it, so now it can be used as a video player.

Key Features

Using the Control

Using the VideoCarousel control is very simple. In your Silverlight application, add a reference to the assembly (the name of the assembly is Cokkiy.Display.VideoCarousel). Then, in your page's XAML file, do the following:

In the beginning of the page, add an xmlns reference:

<UserControl x:Class="VideoCarouselTest.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:display="clr-namespace:Cokkiy.Display;assembly=Cokkiy.Display.VideoCarousel"
   >

Then, place the VideoCarousel control inside your layout control, such as a Grid or StackPanel:

<Grid x:Name="LayoutRoot" Background="White">        
  <display:VideoCarousel x:Name="carousel" 
    TurnDirection="Counterclockwise" Padding="5,5,5,5" >

Also, you can set its background like this:

 <display:VideoCarousel.Background>
          <LinearGradientBrush EndPoint="0.5,0" StartPoint="0.5,1">
              <GradientStop Color="#FF000000"/>
              <GradientStop Color="#FFFFFFFF" Offset="1"/>
           </LinearGradientBrush>
 </display:VideoCarousel.Background>

If you want to set the media info static in your XAML file, you can do the following:

<display:VideoCarousel.ItemSources>
    <display:ItemSource Title="Sample Video" 
              Director="Unknown" Actors="Unknown" 
              Producer="Microsoft" 
              ImageSource="Images/01.jpg" 
              MediaSource="Videos/SampleVideo.wmv"/>
          <display:ItemSource Title="Sample" ImageSource="Images/02.jpg" 
                     MediaSource="Videos/Sample.wmv"/>
          <display:ItemSource Title="SL VC1 Video" ImageSource="Images/03.jpg" 
                    MediaSource="Videos/sl.wmv"/>
          <display:ItemSource Title="silverlight" ImageSource="Images/04.jpg" 
                     MediaSource="Videos/silverlight.wmv"/>
          <display:ItemSource Title="SampleVideo" ImageSource="Images/05.jpg" 
                       MediaSource="Videos/SampleVideo.wmv"/>
          <display:ItemSource Title="Sample" ImageSource="Images/06.jpg" 
                       MediaSource="Videos/Sample.wmv"/>
          <display:ItemSource Title="sl" ImageSource="Images/07.jpg" 
                       MediaSource="Videos/sl.wmv"/>
          <display:ItemSource Title="silverlight" ImageSource="Images/08.jpg" 
                      MediaSource="Videos/silverlight.wmv"/>
          <display:ItemSource Title="SampleVideo" ImageSource="Images/09.jpg" 
                      MediaSource="Videos/SampleVideo.wmv"/>
          <display:ItemSource Title="silverlight" ImageSource="Images/10.jpg" 
                       MediaSource="silverlight.wmv"/>
    <display:ItemSource Title="Error created" ImageSource="Images/11.jpg"/>
</display:VideoCarousel.ItemSources>

In the end, close the tag:

   </display:VideoCarousel>
</Grid>

But in most situations, you want to dynamically add media info into the collection based on user selection or the video just watched. You can subscribe to the SelectedItemChanged or CurrentMediaStateChnaged event. The SelectedItemChanged event occurs when the user selects an item, and the CurrentMediaStateChnaged event occurs when the media is playing, paused, or stopped. The following code adds a film to the control:

carousel.ItemSources.Add(
     new Uri("Images/25.jpg", UriKind.Relative), // a picture from the film
     new Uri("Videos/sl.wmv",UriKind.Relative), // the media Uri addresss
     "Dynamic added SL VC1 Video", // Film title
     "Jo Coco", // the director
     "Tom Crausel", // the main actor
     "the Disney Product"); // the producer

You also want to remove the media the user just watched when the media ends.

void carousel_CurrentMediaStateChnaged(object sender, MediaStateChangedEventArgs e)
{
      if (e.MediaState == MediaState.Ended)
      {
          // remove the media user just watched
          carousel.ItemSources.Remove(e.Title);
      }
}

Some times, you may want the Carousel part not to auto turn. You can simply set AutoTurn to false to get this effect. When the Carousel not auto turning, a button will appear on each side of the Carousel, and the user can use the buttons to turn left or right.

videoCarousel4.JPG

In the XAML file, you can do this:

<display:VideoCarousel x:Name="carousel" AutoTurn="False" 
     TurnDirection="Counterclockwise" Padding="5,5,5,5" >

Or you can set it in code.

How it Works

Here, I won't repeat how the Carousel works (you can read how it works here). The main point here is the video player. The video player is a UserControl. Here is the XAML (note that here I have omitted the control template code):

<UserControl x:Class="Cokkiy.Display.VideoPlayer"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  xmlns:vsm="clr-namespace:System.Windows;assembly=System.Windows"
  xmlns:mwc="clr-namespace:Microsoft.Windows.Controls;assembly=Cokkiy.Common.Controls"
  xmlns:cc="clr-namespace:Cokkiy.Common.Controls;assembly=Cokkiy.Common.Controls"
  xmlns:resources="clr-namespace:Cokkiy.Display.Resources"
  HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
  >
  <Grid x:Name="LayoutRoot" 
         HorizontalAlignment="Stretch" 
         VerticalAlignment="Stretch" 
         MouseLeave="LayoutRoot_MouseLeave" 
         MouseMove="LayoutRoot_MouseMove" 
         Opacity="1" Background="Transparent">
     <vsm:VisualStateManager.VisualStateGroups>
    <vsm:VisualStateGroup x:Name="PositionStates">
        <vsm:VisualState x:Name="SetPositionState">
                  <Storyboard>
                <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" 
                        Duration="00:00:00.0010000" 
                        Storyboard.TargetName="positionSlider" 
                        Storyboard.TargetProperty="(UIElement.Opacity)">
                <SplineDoubleKeyFrame KeyTime="00:00:00" Value="1"/>
                </DoubleAnimationUsingKeyFrames>
                <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" 
                           Duration="00:00:00.0010000" 
                             Storyboard.TargetName="_base" 
                             Storyboard.TargetProperty="(UIElement.Opacity)">
                 <SplineDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
                </DoubleAnimationUsingKeyFrames>
                    <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" 
                         Duration="00:00:00.0010000" 
                           Storyboard.TargetName="position" 
                                Storyboard.TargetProperty="(UIElement.Opacity)">
                 <SplineDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
                </DoubleAnimationUsingKeyFrames>
                <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" 
                         Duration="00:00:00.0010000" 
                         Storyboard.TargetName="bufferPosition" 
                         Storyboard.TargetProperty="(UIElement.Opacity)">
                 <SplineDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
                </DoubleAnimationUsingKeyFrames>
            </Storyboard>
            </vsm:VisualState>
        <vsm:VisualState x:Name="ShowPositionState"/>
     </vsm:VisualStateGroup>
     <vsm:VisualStateGroup x:Name="ControlStates">
      <vsm:VisualStateGroup.Transitions>
        <vsm:VisualTransition GeneratedDuration="00:00:02" 
               To="ShowControlPanelState"/>
        <vsm:VisualTransition From="ShowControlPanelState" 
               GeneratedDuration="00:00:02"/>
      </vsm:VisualStateGroup.Transitions>
      <vsm:VisualState x:Name="ShowControlPanelState">
         <Storyboard>
            <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" 
                     Storyboard.TargetName="controlBorder" 
                     Storyboard.TargetProperty="(UIElement.Opacity)">
                <SplineDoubleKeyFrame KeyTime="00:00:01" Value="0.8"/>
            </DoubleAnimationUsingKeyFrames>
        </Storyboard>
      </vsm:VisualState>
      <vsm:VisualState x:Name="HideControlPanelState"/>
     </vsm:VisualStateGroup>
     </vsm:VisualStateManager.VisualStateGroups>
     <Image x:Name="frameImage" 
         HorizontalAlignment="Center" VerticalAlignment="Center" 
         Stretch="Uniform" />
     <Grid x:Name="mediaBackground" 
               Background="Black" Visibility="Collapsed">
          <StackPanel MouseLeftButtonUp="mediaPlace_MouseLeftButtonUp" 
                 x:Name="mediaPlace" 
                 VerticalAlignment="Center" 
                 HorizontalAlignment="Center">
              <MediaElement AutoPlay="False" x:Name="mediaPlayer"/>
          </StackPanel>
     </Grid>
     <Border CornerRadius="30,30,0,30" 
                  VerticalAlignment="Bottom" Background="Black" 
                  x:Name="controlBorder" Opacity="0">
         <Grid x:Name="controlGrid" Opacity="0.7" 
                   HorizontalAlignment="Stretch" 
                   VerticalAlignment="Bottom" 
                   Background="Transparent">
             <Grid.ColumnDefinitions>
                 <ColumnDefinition Width="Auto"/>
                 <ColumnDefinition Width="*"/>
             </Grid.ColumnDefinitions>
             <cc:PlayPauseButton x:Name="playPauseButton" 
                 IsEnabled="False" Width="60" Height="60" 
                 Click="playPauseButton_Click"/>
             <StackPanel Grid.Column="1">
                 <TextBlock x:Name="titleTextBlock" 
                        HorizontalAlignment="Center" 
                        VerticalAlignment="Center" 
                        FontSize="16" Foreground="White" 
                        Text="Video Tile" TextWrapping="Wrap"/>
                 <mwc:DockPanel LastChildFill="True">
                    <Button Margin="0,0,5,0" 
                       mwc:DockPanel.Dock="Left" x:Name="stopButton" 
                       Click="stopButton_Click" 
                       Style="{StaticResource StopButtonStyle}"/>
                    <StackPanel Orientation="Horizontal" 
                            mwc:DockPanel.Dock="Right">
                       <Slider Width="100" Maximum="1" 
                          Value="0.5" LargeChange="0.05" SmallChange="0.01" 
                          Style="{StaticResource EllipseSliderStyle}" 
                          x:Name="volumeSlider" 
                          ValueChanged="volumeSlider_ValueChanged"/>
                       <ToggleButton Margin="0,0,5,0" VerticalAlignment="Center" 
                                 Style="{StaticResource muteToggleButtonStyle}" 
                                 x:Name="muteButton" 
                                 Checked="muteButton_Checked" 
                                 Unchecked="muteButton_Unchecked"/>
                    </StackPanel>
                    <!--Position TraackBar and Text-->
                    <StackPanel x:Name="positionPanel" 
                              MouseEnter="positionPanel_MouseEnter" 
                              MouseLeave="positionPanel_MouseLeave" 
                              HorizontalAlignment="Stretch">
                        <Grid>       
                           <Rectangle Fill="#FF7C7A7A" 
                                   Height="5" VerticalAlignment="Center" 
                                  x:Name="_base" 
                                          SizeChanged="_base_SizeChanged" 
                                               HorizontalAlignment="Stretch"/>
                           <Rectangle Fill="#FFD7F90E" x:Name="bufferPosition" 
                                       VerticalAlignment="Center" 
                                       HorizontalAlignment="Left" 
                                       Height="5" Width="0"/>
                           <Rectangle Fill="#FFFAFAFB" 
                              Height="5" VerticalAlignment="Center" 
                              HorizontalAlignment="Left" 
                              Width="0" x:Name="position"/>
                           <Slider Maximum="1" 
                                LargeChange="0.05" SmallChange="0.01" 
                                mwc:DockPanel.Dock="Right" 
                                Style="{StaticResource EllipseSliderStyle}" 
                                IsEnabled="False" x:Name="positionSlider" 
                                ValueChanged="positionSlider_ValueChanged" 
                                Opacity="0"/>
                         </Grid>
                         <mwc:DockPanel LastChildFill="False">
                             <TextBlock Foreground="White" 
                                     mwc:DockPanel.Dock="Right" 
                                     x:Name="mediaDurantionTextBlock" 
                                     Text="unknown"/>
                             <TextBlock Foreground="White" 
                                     mwc:DockPanel.Dock="Right" 
                                     Text="/"/>
                             <TextBlock Foreground="White" 
                                     mwc:DockPanel.Dock="Right" 
                                     x:Name="mediaPositionTextBlock" 
                                     Text="00:00:00"/>                                
                         </mwc:DockPanel>
                    </StackPanel>
                  </mwc:DockPanel>
              </StackPanel>
          </Grid>
      </Border>
      <Grid HorizontalAlignment="Center" x:Name="loadingInfo" 
           VerticalAlignment="Center" 
           Visibility="Collapsed">
      <-- Omit the loading animation control -->
   </Grid>
</Grid>

The main part of the video player is a control panel which controls the MediaElement to play, pause, or stop the media and indicate the position of the media. The visual state controls appear or disappear on the control panel. There are no more interesting things to say about this XAML file.

But in code, something needs to be said. The first is how we track the current position in the media. If you have been studying the MediaElement control, you will notice that there is no notification when the playing position changes. So, I created a Timer object to track the position at specified intervals.

Create a global Timer object:

/// <summary>
/// A timer object to set the current position
/// </summary>
private Timer setPositionTimer;

When the media plays, start the timer.

 /// <summary>
///  Play the media
/// </summary>
private void PlayMedia()
{
     mediaPlayer.Play();
         
     // omit other code here

     // if can seek, show play position
     if (mediaPlayer.CanSeek)
     {
         if (setPositionTimer == null)
         {
               setPositionTimer = new Timer(this.UpdatePosition, null, 0, 500);
         }
     }
}

The TimerCallback function is called by the Timer object. It uses an anonymous delegate to update the position of the track bar.

// Update the play position
private void UpdatePosition(object state)
{
    positionSlider.Dispatcher.BeginInvoke(
          delegate()
          {
               double value = mediaPlayer.Position.TotalSeconds
                             / mediaPlayer.NaturalDuration.TimeSpan.TotalSeconds;
               position.Width = value * _base.ActualWidth;

               mediaPositionTextBlock.Text = 
                 mediaPlayer.Position.TotalMinutes.ToString("F2"); ;
          });
}

The second interesting thing is when the user moves the mouse over the player, the control panel will appear and then disappear if the user holds the mouse still.

When the user moves the mouse, we use the VisualState to make the control panel appear. And, we start the down-count to hide the control panel.

// Mouse move in the layout root panel
private void LayoutRoot_MouseMove(object sender, MouseEventArgs e)
{
  // If mouse move, we show the control panel, then wait a minute 
  // we hide the control panel
  VisualStateManager.GoToState(this, "ShowControlPanelState", true);
  this.Cursor = null;
  HideControlPanel();           
}

The HideControlPanel uses a DispatcherTimer object. Here, we use the DispatcherTimer object because we want to directly update the Visual.

/// <summary>
/// A timer when it's occured, the control panel will be hide
/// </summary>
private DispatcherTimer hideControlPanelTimer;

/// <summary>
/// Hide the control panel when a time out
/// </summary>
private void HideControlPanel()
{
      if (hideControlPanelTimer == null)
      {
          hideControlPanelTimer = new DispatcherTimer();
          hideControlPanelTimer.Interval = TimeSpan.FromSeconds(10);
      }
      hideControlPanelTimer.Stop();
      hideControlPanelTimer.Tick += delegate(object s, EventArgs args)
      {
           // when the time out, hide the control panel
           VisualStateManager.GoToState(this, "HideControlPanelState", true);
           this.Cursor = Cursors.None;
           hideControlPanelTimer.Stop();
      };
     hideControlPanelTimer.Start();
}

I have said so much about the VideoCarousel control. If you have any problems or advice, please contact me.

History

You must Sign In to use this message board.
 
 
Per page   
 FirstPrevNext
GeneralHow To Reduce Media Player Screen Size ?
sam sng
1:59 3 Jan '10  
Dar Cokkiy

Thank you for your sample codes. It was Fabulous !

I am ver new to Silverlight. I wish to consult you on how to redude the media player screen size so that it does not cover the full screen ?

For example, when the video carousel turn (I set to Autoturn = "True", when I click on the video photo, I like the video to auto play (Autoplay = 'True") at the same spot without opening the full screen to play the media.

Is this possible ?

Thanks in advance.
GeneralRe: How To Reduce Media Player Screen Size ?
cokkiy
19:58 30 Jan '10  
It's very simple if I did not misunderstand what your means. Just set the silverlight control's size in the html of which hosted it like fowllowing:
<div id="silverlightControlHost">
        <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="400px" height="300px">
		  <param name="source" value="VideoCarouselTest.xap"/>
		  <param name="onError" value="onSilverlightError" />
		  <param name="background" value="white" />
		  <param name="minRuntimeVersion" value="3.0.40624.0" />
		  <param name="autoUpgrade" value="true" />
		  <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration:none">
 			  <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/>
		  </a>
	    </object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div>


The God created the world.
The programer made the world easy.

QuestionPlease i really need help?
adavecohen
18:20 9 Nov '09  
Dear cokkiy,
I would very much appreciate it if you could appreciate it If you could take the video carousel and fit the HTML code into one code with the background, but please if you could make these controls more user friendley by putting them at the bottom and making the carousel turn smoother.
contact me at adave_cohen@yahoo.com

sincerely Adave
GeneralInitialize error on silverlight 3.0 [modified]
dingdong1
11:36 21 Oct '09  
your comments are appreciated , this is awasome man , i love this concept , but unfortunately i could nto get this working. using vs 08 and silverlight 3.0.

failed at InitializeComponent();


public void InitializeComponent() {
if (_contentLoaded) {
return;
}
_contentLoaded = true;
System.Windows.Application.LoadComponent(this, new System.Uri("/Cokkiy.Display.VideoCarousel;component/VideoPlayer.xaml", System.UriKind.Relative));


this is the error:
System.Windows.Markup.XamlParseException: System.Windows.Markup.XamlParseException: AG_E_PARSER_UNKNOWN_TYPE [Line: 11 Position: 38]
at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
at Cokkiy.Display.VideoPlayer.InitializeComponent()
at Cokkiy.Display.VideoPlayer..ctor() [Line: 0 Position: 0]
--- Inner Exception ---
AG_E_PARSER_UNKNOWN_TYPE [Line: 11 Position: 38]
---> System.Windows.Markup.XamlParseException: AG_E_PARSER_UNKNOWN_TYPE [Line: 11 Position: 38]
at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
at Cokkiy.Display.VideoPlayer.InitializeComponent()
at Cokkiy.Display.VideoPlayer..ctor()
--- End of inner exception stack trace ---
at MS.Internal.XcpImports.CheckHResult(UInt32 hr)
at MS.Internal.XcpImports.FrameworkElement_MeasureOverride(FrameworkElement element, Size availableSize)
at System.Windows.FrameworkElement.MeasureOverride(Size availableSize)
at System.Windows.FrameworkElement.MeasureOverride(IntPtr nativeTarget, Single inWidth, Single inHeight, Single& outWidth, Single& outHeight) [Line: 0 Position: 0]

Let me know how to get it running. ANy suggestion are apprecicated.

thanks
Sunil

modified on Wednesday, October 21, 2009 4:50 PM

GeneralRe: Initialize error on silverlight 3.0
cokkiy
3:01 22 Oct '09  
If you have been upgraded the project to Silverlight 3, there need some changes in XAML file because the SL3 doesn't suppout bind to multi language as the SL2 does, and I don't know why this changes. So I just remove the multilanguage supports.
You can downloan new version of the source I which uploaded.

The God created the world.
The programer made the world easy.

GeneralMy vote of 1
Shakeel Hussain
5:38 29 Jul '09  
hmm
QuestionMedia Failed
mcirullo1
11:04 7 Jun '09  
Would you know what would cause the message "Media Failed" at run time? I have downloaded the source code, added an images folder w/sample images and stepped thru the code and the proper media source is being applied.
AnswerRe: Media Failed
cokkiy
3:33 8 Jun '09  
Would you host the page in web server? You must host the page in a webserver to play media. Please refer MSDN for more info.

The God created the world.
The programer made the world easy.

GeneralRe: Media Failed
elvis_pan
20:00 14 Jun '09  
can you give a link?
Thanks.
GeneralWPF Carousel
Ernesto Herrera
6:22 4 Mar '09  
Hi cokky, Good Job for your Silverlight Carousel, Are you planning to post the same carousel in WPF?

Regards
GeneralOnline Example
cwp42
9:44 3 Dec '08  
Thanks for the article.
But the online example isn't running:
I see the Silverlight loading pic and after it - a plane white site
So I did not vote

cwp42

GeneralRe: Online Example
cokkiy
19:56 6 Dec '08  
I updated the online sample, you can view it now. This happens because I have set the sample's culture to Chinese but your computer dose not support it. I think it is a bug of SL. You can get more info about this error on
http://silverlight.net/forums/p/32833/101739.aspx[^]

The God created the world.
The programer made the world easy.

GeneralRe: Online Example
cwp42
2:53 11 Dec '08  
Thanks - now its running.

cwp42

GeneralMy vote of 1
VickyC#
21:02 27 Nov '08  
does not run
GeneralRe: My vote of 1
cokkiy
3:53 28 Nov '08  
Would you mind describe more detail why it does not run? If there any error in the code I'll fix it.

The God created the world.
The programer made the world easy.

GeneralInitalization Error
shermancp
17:05 26 Nov '08  
Hi - when testing this application I receive an unhandled javascript error.
- 2105: InitializeError : Failed to load pre-requisites for the application.

It's a shame that this i happening as I would like to see the solution running.
GeneralRe: Initalization Error
Dewey
22:15 26 Nov '08  
I get the same error, but I don't see anything wrong... wierd.
AnswerRe: Initalization Error
cokkiy
3:40 27 Nov '08  
I update the source code, if the problem continues, please let me know.

The God created the world.
The programer made the world easy.

GeneralRe: Initalization Error
cokkiy
3:38 27 Nov '08  
I retest the source code in my environment (VS2008+SL2 AddIn) but not found the error you encountered. Are you install the SL2 Addin?
I Update the source code (for fixing some bug and add two event) you can download the new source code to test. If the problem continue, please let me know.
If you want to see the effect of the control, you can see a running example here.[^]

The God created the world.
The programer made the world easy.

GeneralRe: Initalization Error
segui06
8:20 6 Dec '08  
I'm seeing the exact same error everyone else is seeing - even with your new source code. I only see a blank screen in your running example as well.
AnswerRe: Initalization Error
cokkiy
19:44 6 Dec '08  
Sorry, Initalization Error happened because I have set the test app SupportCulture to chinese, you can remove the tag from the test app project file. Also I update the online sample, now you can view it.
You can get more info about this error from http://silverlight.net/forums/p/32833/101739.aspx[^]

The God created the world.
The programer made the world easy.

GeneralRe: Initalization Error
MyDrocks
16:02 9 Jan '09  
Please let me know exactly what I have to do - thanks in advance.

Regards,
MyD


Last Updated 22 Oct 2009 | Advertise | Privacy | Terms of Use | Copyright © CodeProject, 1999-2010