Extended Library for UWP
手順2:Book コントロールへのコンテンツの追加
Extended Library for UWP > Book for UWP > クイックスタート > 手順2:Book コントロールへのコンテンツの追加

この手順では、設計時、XAML マークアップ、およびコードで C1Book コントロールにコンテンツを追加して、ページめくり可能な複数のページから成る仮想の本を作成します。プロジェクトをカスタマイズしてアプリケーションの C1Book コントロールにコンテンツを追加するには、次の手順に従います。

  1. 次のようにマークアップを編集します。
    マークアップ
    コードのコピー
    <Border Grid.Row="1">
      <Grid>
        <Extended:C1Book x:Name="book" Height="450" Width="600">
          </Extended:C1Book>
      </Grid>
    </Border>
    
  2. <Extended: C1Book> </Extended: C1Book> タグ内で、次の XAML マークアップを追加します。これで、マークアップにいくつかのテンプレートが追加されます。

    XAML でマークアップの書き方

    マークアップ
    コードのコピー
    <Extended:C1Book.LeftPageTemplate>
                        <ControlTemplate TargetType="ContentControl">
                            <Border Background="WhiteSmoke" BorderBrush="WhiteSmoke" BorderThickness="10 10 0 10">
                                <ContentPresenter Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" Margin="{TemplateBinding Padding}" />
                            </Border>
                        </ControlTemplate>
                    </Extended:C1Book.LeftPageTemplate>
                    <Extended:C1Book.RightPageTemplate>
                        <ControlTemplate TargetType="ContentControl">
                            <Border Background="WhiteSmoke" BorderBrush="WhiteSmoke" BorderThickness="10 10 0 10">
                                <ContentPresenter Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" Margin="{TemplateBinding Padding}" />
                            </Border>
                        </ControlTemplate>
                    </Extended:C1Book.RightPageTemplate>
                    <Extended:C1Book.ItemTemplate>
                        <DataTemplate>
                           <Grid>
                                <Grid.Background>
                                    <LinearGradientBrush EndPoint="1,1" StartPoint="0,0">
                                        <GradientStop Color="#FFE2E8EB" Offset="0.2"/>
                                        <GradientStop Color="#FFEEF4F7" Offset="0.3"/>
                                        <GradientStop Color="#FFE2E8EB" Offset="0.4"/>
                                    </LinearGradientBrush>
                                </Grid.Background>
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="Auto" />
                                    <RowDefinition Height="*"/>
                                    <RowDefinition Height="Auto" />
                                </Grid.RowDefinitions>
                                <Image Source="{Binding Path=CoverUri}" Stretch="Uniform" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Row="1"/>
                                <TextBlock Text="{Binding Path=Title}" TextWrapping="Wrap" TextAlignment="Left" FontSize="11" FontWeight="Bold" Margin="10,7,10,10" Foreground="#FF22445F"/>
                                <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Row="2" Grid.RowSpan="1" Margin="10,7,10,10">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition />
                                        <ColumnDefinition />
                                    </Grid.ColumnDefinitions>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="Auto" />
                                        <RowDefinition Height="Auto" />
                                    </Grid.RowDefinitions>
                                    <TextBlock HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Text="{Binding Path=Price}" TextWrapping="NoWrap" Grid.ColumnSpan="1" Grid.Row="1" Grid.Column="1" FontSize="11" Foreground="#FF086C8E" FontWeight="Bold"/>
                                    <TextBlock HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Text="{Binding Path=Id}" Grid.ColumnSpan="1" Grid.Column="1" TextWrapping="NoWrap" FontSize="11" Foreground="#FF383838"/>
                                    <TextBlock Text="Book Code:" TextWrapping="NoWrap" FontSize="11" Foreground="#FF383838"/>
                                    <TextBlock Text="Price:" TextWrapping="NoWrap" Grid.Row="1" Margin="0,4,0,2" FontSize="11" Foreground="#FF383838"/>
                                </Grid>
                            </Grid>
                        </DataTemplate>
                    </Extended:C1Book.ItemTemplate>
    
  3. コードビューで、次の import 文をページの先頭に追加します。

    C# コードの書き方

    C#
    コードのコピー
    using C1.Xaml.Extended;
    
  4. ページのコンストラクタの直後に次のコードを追加します。このコードで、別のコードファイルからデータを呼び出すことができます。

    C# コードの書き方

    C#
    コードのコピー
    InitDataSource();
            }
            private void InitDataSource()
            {
                // xml から本の説明をロードします
                string peopleXMLPath = Path.Combine(Package.Current.InstalledLocation.Path, "Amazon.xml");
                XDocument doc = XDocument.Load(peopleXMLPath);
                // XDocument doc = XDocument.Load(@"..\..\..\Amazon.xml");
                var books = from reader in doc.Descendants("book")
                            select new AmazonBookDescription
                            {
                                Title = reader.Attribute("title").Value,
                                CoverUri = reader.Attribute("coverUri").Value,
                                Id = reader.Attribute("id").Value,
                                Price = reader.Attribute("price").Value,
                                StockAmount = int.Parse(reader.Attribute("stockAmount").Value)
                            };
                // 本の項目ソースを設定します
                book.ItemsSource = books;
            }
            #region Object Model
            public Orientation Orientation
            {
                get
                {
                    return book.Orientation;
                }
                set
                {
                    book.Orientation = value;
                }
            }
            public bool IsFirstPageOnTheRight
            {
                get
                {
                    return book.IsFirstPageOnTheRight;
                }
                set
                {
                    book.IsFirstPageOnTheRight = value;
                }
            }
            public PageFoldVisibility ShowPageFold
            {
                get
                {
                    return book.ShowPageFold;
                }
                set
                {
                   book.ShowPageFold = value;
                }
            }
            public PageFoldAction PageFoldAction
            {
                get
                {
                    return book.PageFoldAction;
                }
                set
                {
                    book.PageFoldAction = value;
                }
            }
            public double FoldSize
            {
                get
                {
                    return book.FoldSize;
                }
                set
                {
                    book.FoldSize = value;
                }
            }
            public int CurrentPage
            {
                get
                {
                    return book.CurrentPage;
                }
                set
                {
                    book.CurrentPage = value;
                }
            }
            #endregion
    

この手順では、C1Book コントロールにテンプレートを追加し、別のファイルからコンテンツを呼び出すコードを追加しました。次の手順では、アプリケーションにいくつかのファイルを追加します。

関連トピック