LinkedStyle.vb
''
'' This code is part of Document Solutions for Word demos.
'' Copyright (c) MESCIUS inc. All rights reserved.
''
Imports System.IO
Imports System.Drawing
Imports System.Collections.Generic
Imports System.Linq
Imports GrapeCity.Documents.Word

Public Class LinkedStyle
    Function CreateDocx() As GcWordDocument
        Dim logList = New List(Of String)()
        Dim Log As Action(Of String) = Sub(message As String) logList.Add(message)

        Dim doc = New GcWordDocument()
        doc.HideLinkedCharacterStyles = False

        Dim linkedStyle = doc.Styles.AddLinkedStyle("Linked Style", doc.Styles(BuiltInStyleId.Heading1))
        Log($"Linked paragraph style is linked: {linkedStyle.Linked}")
        Log($"Linked paragraph style name: {linkedStyle.Name}")
        Log($"Linked paragraph style type: {linkedStyle.Type}")
        Log($"Linked character style is linked: {linkedStyle.LinkStyle.Linked}")
        Log($"Linked character style name: {linkedStyle.LinkStyle.Name}")
        Log($"Linked character style type: {linkedStyle.LinkStyle.Type}")

        linkedStyle.Font.Bold = True
        Log($"Linked paragraph style is bold: {linkedStyle.Font.Bold}")
        Log($"Linked character style is bold: {linkedStyle.LinkStyle.Font.Bold}")

        doc.Body.Paragraphs.Add("This paragraph is formatted with a linked style that is applied to the whole paragraph as a paragraph style.", linkedStyle)

        Dim paragraph = doc.Body.Paragraphs.Add("In this paragraph, ", doc.Styles(BuiltInStyleId.Normal))
        Dim run = paragraph.GetRange().Runs.Add("this run is formatted with the same linked style applied to the run as a character style.", linkedStyle)

        Log($"HideLinkedCharacterStyles is: {doc.HideLinkedCharacterStyles}")
        Log($"Styles collection has character linked styles: {doc.Styles.FirstOrDefault(Function(x) x.Linked AndAlso x.Type = StyleType.Character) IsNot Nothing}")
        Log($"Run style name: {run.Style.Name}")

        doc.HideLinkedCharacterStyles = True
        Log($"HideLinkedCharacterStyles is: {doc.HideLinkedCharacterStyles}")
        Log($"Styles collection has character linked styles: {doc.Styles.FirstOrDefault(Function(x) x.Linked AndAlso x.Type = StyleType.Character) IsNot Nothing}")
        Log($"Run style name: {run.Style.Name}")

        doc.Body.Paragraphs.Add("Log (see example code for details):", doc.Styles(BuiltInStyleId.Heading2))
        logList.ForEach(Sub(m_) doc.Body.Paragraphs.Add(m_, doc.Styles(BuiltInStyleId.NoSpacing)))

        Return doc
    End Function
End Class