Articles → Silverlight → On demand assembly loading in silverlight

On demand assembly loading in silverlight

Software Requirement

Prerequisite Knowledge

What is on demand assembly loading?

Steps of implementation

Create a new Silverlight project

Click to Enlarge

Add Silverlight class library project in the solution

Click to Enlarge

Add a Silverlight user control in the library project

Click to Enlarge

Add code in Silverlight user control

<Grid x:Name="LayoutRoot" >
	<Border BorderThickness="5" CornerRadius="12" Width="500" Height="200" BorderBrush="DarkRed"  Background="BurlyWood" >
		<StackPanel Orientation="Vertical" >
			<TextBlock Text="Feedback Form"></TextBlock>
			<TextBlock Text="Date :" x:Name="txtLoaded"></TextBlock>
			<TextBlock Text="Enter Your Feedback Please" x:Name="lblFeedback"></TextBlock>
			<TextBox x:Name="txtFeedback" Width="Auto" Height="Auto" TextWrapping="Wrap"></TextBox>
			<Button Content="Submit" Height="23" Name="btnSubmit" Width="75" />

public LoadOnDemandCustomControl() {
  this.Loaded += new RoutedEventHandler(LoadOnDemandCustomControl_Loaded);
void LoadOnDemandCustomControl_Loaded(object sender, RoutedEventArgs e) {
  txtLoaded.Text += DateTime.Now.ToString();

Set the output path of library project

Click to Enlarge

Add a reference of library project in Silverlight application

Click to Enlarge

Add code in Silverlight application

<Grid x:Name="LayoutRoot">
	<StackPanel x:Name="stkControls" Orientation="Vertical" Width="Auto" HorizontalAlignment="Center" VerticalAlignment="Center" >
		<Button Content="Click here for feedback" x:Name="btnLoad" Click="btnLoad_Click"></Button>

private bool customControlsLoaded = false;

private void btnLoad_Click(object sender, RoutedEventArgs e) {
  if (!customControlsLoaded) {
    WebClient wc = new WebClient();
    wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
    wc.OpenReadAsync(new Uri("OnDemand.dll", UriKind.Relative));
  } else

void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) {
  if (e.Error == null && e.Result != null) {
    AssemblyPart part = new AssemblyPart();
    customControlsLoaded = true;

private void AddCustomControl() {
  OnDemand.LoadOnDemandCustomControl ctrl = new OnDemand.LoadOnDemandCustomControl();
  this.btnLoad.Visibility = System.Windows.Visibility.Collapsed;


Click to Enlarge

Click to Enlarge

Posted By  -  Ritesh Arya
Posted On  -  Monday, September 3, 2012


Your Email Id  
Query/FeedbackCharacters remaining 250