是否可以在WPF文本框中選擇多個文本部分?例如,對於包含字符串THIS IS A TEST
一個文本框,我希望能夠以突出THIS
,然後按住Ctrl鍵並突出TEST
沒有取消選擇THIS
。如何在WPF文本框中選擇多個文本片段?
有關是我的目標在視覺線索,請參閱this文章瞭解Firefox的功能。
如果在默認情況下是沒有辦法做到這一點,我想知道是否有任何WPF,做實施的第三方控制。
是否可以在WPF文本框中選擇多個文本部分?例如,對於包含字符串THIS IS A TEST
一個文本框,我希望能夠以突出THIS
,然後按住Ctrl鍵並突出TEST
沒有取消選擇THIS
。如何在WPF文本框中選擇多個文本片段?
有關是我的目標在視覺線索,請參閱this文章瞭解Firefox的功能。
如果在默認情況下是沒有辦法做到這一點,我想知道是否有任何WPF,做實施的第三方控制。
WPF的TextBox和RichTextBox的類不直接支持多項選擇,但與WPF的大部分地區這是非常容易定製其現有的RichTextBox來獲得這種能力。
的步驟是:
ObservableCollection<TextRange>
類型的「AdditionalRanges」屬性,該屬性將包含除了當前TextSelection所有選定範圍OnPreviewMouseLeftButtonDown
:如果Ctrl鍵按下時,將當前TextSelection合併到您的「AdditionalRanges」屬性中並清除選擇,否則清除「AdditionalRanges」。CollectionChanged
處理程序使用TextRange.ApplyPropertyValue()
使集合中添加的範圍內出現加亮後並去除範圍通常出現「AdditionalRanges」。在您的實現我還建議你實現爲了方便多了一些屬性:
這些都是相當微不足道的實現。
最後說明:
TextChanged
處理器知道什麼時候更新了「文本」屬性,以及PropertyChangedCallback知道什麼時候更新的FlowDocument不幸的是標準的WPF TextBox不支持這種行爲。 所以我看到獲得該功能的唯一方法是實現自己的文本框控件(可能基於標準文本框ControlTemplate)。
乾杯,亞歷克斯