2013-09-29 64 views
1

我已經設法應用項目符號列表格式化,但如何再次刪除它? 如何檢測選擇是否包含List? 我過分複雜嗎?是否有直接的方式將選擇轉換爲項目符號列表並返回?刪除WPF richtextbox選擇的bulletstyle

Private Sub bullet(o As Windows.Forms.ContextMenuStrip, e As Windows.Forms.ToolStripItemClickedEventArgs) 
    Dim lst As New Windows.Documents.List() 
    lst.MarkerStyle = bullets(e.ClickedItem.Text) 
    If rtf.Selection.IsEmpty Then 
     lst.ListItems.Add(New Windows.Documents.ListItem()) 
    Else 
     Dim li As Windows.Documents.ListItem 
     Dim lines() As String = rtf.Selection.Text.Split(vbCrLf) 
     For Each s As String In lines 
      li = New Windows.Documents.ListItem() 
      li.Blocks.Add(New Windows.Documents.Paragraph(New Windows.Documents.Run(s.Trim()))) 
      lst.ListItems.Add(li) 
     Next 
     rtf.Selection.Text = "" 
    End If 
    Dim curCaret = rtf.CaretPosition 
    Dim curBlock = rtf.Document.Blocks.Where(Function(x) x.ContentStart.CompareTo(curCaret) = -1 AndAlso x.ContentEnd.CompareTo(curCaret) = 1).FirstOrDefault() 
    rtf.Document.Blocks.InsertAfter(curBlock, lst) 
    Dim vMove As Windows.Documents.TextPointer = Nothing 

    vMove = curCaret.GetNextInsertionPosition(Windows.Documents.LogicalDirection.Forward) 
    If vMove IsNot Nothing Then rtf.CaretPosition = vMove 

    rtf.Focus() 
End Sub 

我後來從我的項目中刪除了這段代碼,因爲它在某些情況下不可靠。基於動態XAML插入的解決方案會更可靠嗎? WPF的許多方面似乎很糟糕......

回答

0

嘗試EditingCommands.ToggleBullets.Execute(null, richTextBox)切換符號樣式中選擇段落。