Extended Library for WPF and Silverlight | ComponentOne
Book / Quick Start: Book for WPF / Step 2 of 3: Adding Content to the Book Control
In This Topic
    Step 2 of 3: Adding Content to the Book Control
    In This Topic

    In this step you'll add content to the C1Book control in design-time, XAML markup, and code. You'll add standard Microsoft controls and content to create a virtual book with several pages that can be turned. To customize your project and add content to the C1Book control in your application, complete the following steps:

    1. Click once on the C1Book control to select it.
    2. Navigate to the Toolbox and double-click the TextBlock control to add it to the project
    3. In XAML view move the TextBlock’s tag so it is within the C1Book control’s tags
    4. Select the TextBlock in Design view, navigate to the Properties window, and set the following properties:
    1. Switch to XAML view and add two button controls in the markup just after the TextBlock. The markup will appear like the following:
    XAML
    Copy Code
    <c1:C1Book Name="C1Book1" Width="450" Height="300" VerticalAlignment="Center" HorizontalAlignment="Center" IsFirstPageOnTheRight="True" TurnInterval="600">
        <TextBox Height="23" HorizontalAlignment="Center" Margin="10,0,0,102" Name="TextBox1" VerticalAlignment="Center" Width="120">Hello World!</TextBox>
    
      <Button x:Name="Button1" Content="Last" Height="100" Width="100" Click="Button1_Click"/>
       <Button x:Name="Button2" Content="Next" Width="150" Height="150" Click="Button2_Click"/>
    
    </c1:C1Book>
    

     

    This will give the buttons names so they are accessible in code, size the controls, and add event handlers that you will add code for in the next steps.

    1. In Design view, double-click the window to switch to Code view.
    2. In Code view, add the following import statements to the top of the page:
    Visual Basic
    Copy Code
    Imports C1.WPF
    Imports C1.WPF.Extended
    
    C#
    Copy Code
    using C1.WPF;
    using C1.WPF.Extended;
    
    1. Add the following code just after the page's constructor to add handlers to the Click events:
    Visual Basic
    Copy Code
    Private Sub Button1_Click(ByVal sender as Object, ByVal e as System.Windows.RoutedEventArgs)
        Me.C1Book1.CurrentPage = Me.c1book1.CurrentPage - 1
    End Sub
    
    Private Sub Button2_Click(ByVal sender as Object, ByVal e as System.Windows.RoutedEventArgs)
       Me.C1Book1.CurrentPage = Me.c1book1.CurrentPage + 2
    End Sub
    

     

    C#
    Copy Code
    private void Button1_Click(object sender, System.Windows.RoutedEventArgs e)
    {
       this.c1Book1.CurrentPage = this.c1Book1.CurrentPage - 1;
    }
    private void Button2_Click(object sender, System.Windows.RoutedEventArgs e)
    {
       this.c1Book1.CurrentPage = this.c1Book1.CurrentPage + 1;
    }
    

    The buttons will now allow the user to navigate to the last or next page at run time.

    1. Add code to the Window_Loaded event so that it appears similar to the following:
    Visual Basic
    Copy Code
    Private Sub Window1_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
       Dim txt1 As New TextBlock
        txt1.VerticalAlignment = VerticalAlignment.Center
        txt1.HorizontalAlignment = HorizontalAlignment.Center
        txt1.Text = "The End."
       C1Book1.Items.Add(txt1)
    End Sub
    
    C#
    Copy Code
    private void Window_Loaded(object sender, RoutedEventArgs e)
    
    {
    
        TextBlock txt1 = new TextBlock();
    
        txt1.VerticalAlignment = VerticalAlignment.Center;
    
        txt1.HorizontalAlignment = HorizontalAlignment.Center;
    
        txt1.Text = "The End.";
    
        c1Book1.Items.Add(txt1);
    }
    
    This will add a TextBlock to the C1Book control in code.
    1. Save your project and return to XAML view.
    2. In XAML view, add the following markup just after the <Button x:Name="Button2"/> tag:
    XAML
    Copy Code
    <Grid x:Name="checkers" Background="White" ShowGridLines="True">
    
        <Grid.RowDefinitions>
    
            <RowDefinition Height=".25*" />
    
            <RowDefinition Height=".25*" />
    
            <RowDefinition Height=".25*" />
    
            <RowDefinition Height=".25*" />
    
        </Grid.RowDefinitions>
    
        <Grid.ColumnDefinitions>
    
            <ColumnDefinition Width=".25*" />
    
            <ColumnDefinition Width=".25*" />
    
            <ColumnDefinition Width=".25*" />
    
            <ColumnDefinition Width=".25*" />
    
        </Grid.ColumnDefinitions>
    
        <Rectangle Fill="Red" Grid.Row="0"  Grid.Column="0" Margin="5" />
    
        <Rectangle Fill="Black" Grid.Row="0" Grid.Column="1" Margin="5"  />
    
        <Rectangle Fill="Red" Grid.Row="0" Grid.Column="2" Margin="5"  />
    
        <Rectangle Fill="Black" Grid.Row="0" Grid.Column="3" Margin="5"  />
    
        <Rectangle Fill="Black" Grid.Row="1" Grid.Column="0" Margin="5"  />
    
        <Rectangle Fill="Red" Grid.Row="1" Grid.Column="1" Margin="5"  />
    
        <Rectangle Fill="Black" Grid.Row="1" Grid.Column="2" Margin="5"  />
    
        <Rectangle Fill="Red" Grid.Row="1" Grid.Column="3" Margin="5"  />
    
        <Rectangle Fill="Red" Grid.Row="2" Grid.Column="0" Margin="5"  />
    
        <Rectangle Fill="Black" Grid.Row="2" Grid.Column="1" Margin="5"  />
    
        <Rectangle Fill="Red" Grid.Row="2" Grid.Column="2" Margin="5"  />
    
        <Rectangle Fill="Black" Grid.Row="2" Grid.Column="3" Margin="5"  />
    
        <Rectangle Fill="Black" Grid.Row="3" Grid.Column="0" Margin="5"  />
    
        <Rectangle Fill="Red" Grid.Row="3" Grid.Column="1" Margin="5"  />
    
        <Rectangle Fill="Black" Grid.Row="3" Grid.Column="2" Margin="5"  />
    
        <Rectangle Fill="Red" Grid.Row="3" Grid.Column="3" Margin="5"  />
    
    </Grid>
    
    <Grid x:Name="checkers2" Background="White" ShowGridLines="True">
    
        <Grid.RowDefinitions>
    
            <RowDefinition Height=".25*" />
    
            <RowDefinition Height=".25*" />
    
            <RowDefinition Height=".25*" />
    
            <RowDefinition Height=".25*" />
    
        </Grid.RowDefinitions>
    
        <Grid.ColumnDefinitions>
    
            <ColumnDefinition Width=".25*" />
    
            <ColumnDefinition Width=".25*" />
    
            <ColumnDefinition Width=".25*" />
    
            <ColumnDefinition Width=".25*" />
    
        </Grid.ColumnDefinitions>
    
        <Rectangle Fill="Red" Grid.Row="0" Grid.Column="0" Margin="5" />
    
        <Rectangle Fill="Black" Grid.Row="0" Grid.Column="1" Margin="5"  />
    
        <Rectangle Fill="Red" Grid.Row="0" Grid.Column="2" Margin="5"  />
    
       <Rectangle Fill="Black" Grid.Row="0" Grid.Column="3" Margin="5"  />
    
        <Rectangle Fill="Black" Grid.Row="1" Grid.Column="0" Margin="5"  />
    
        <Rectangle Fill="Red" Grid.Row="1" Grid.Column="1" Margin="5"  />
    
        <Rectangle Fill="Black" Grid.Row="1" Grid.Column="2" Margin="5"  />
    
        <Rectangle Fill="Red" Grid.Row="1" Grid.Column="3" Margin="5"  />
    
        <Rectangle Fill="Red" Grid.Row="2" Grid.Column="0" Margin="5"  />
    
        <Rectangle Fill="Black" Grid.Row="2" Grid.Column="1" Margin="5"  />
    
        <Rectangle Fill="Red" Grid.Row="2" Grid.Column="2" Margin="5"  />
    
        <Rectangle Fill="Black" Grid.Row="2" Grid.Column="3" Margin="5"  />
    
        <Rectangle Fill="Black" Grid.Row="3" Grid.Column="0" Margin="5"  />
    
        <Rectangle Fill="Red" Grid.Row="3" Grid.Column="1" Margin="5"  />
    
        <Rectangle Fill="Black" Grid.Row="3" Grid.Column="2" Margin="5"  />
    
        <Rectangle Fill="Red" Grid.Row="3" Grid.Column="3" Margin="5"  />
    
    </Grid>
    

     This markup will add two Grids with multiple Rectangle elements. This markup demonstrates how you can add multiple controls to a page of the C1Book control as long as the controls are all in one panel, such as a Grid or StackPanel.

    In this step you completed adding content to the C1Book control. In the next step you'll run the application and observe run-time interactions.