所有我見過的設置下劃線,上劃線或刪除線的例子都這個樣子:如何應用多個TextDecorations?
// setting underline
textRange.ApplyPropertyValue(Inline.TextDecorationsProperty,
TextDecorations.Underline);
// clearing underline
textRange.ApplyPropertyValue(Inline.TextDecorationsProperty, null);
這似乎過於簡單化了我;在TextDecorationsProperty
返回裝飾的集合 - 你可以有Overline
,Underline
和Strikethrough
都在同一時間應用;像這樣設置它們會抹去整個系列。
這就是我對切換他們通過TextDecorationLocation
:
var textRange = new TextRange(tb.Selection.Start, tb.Selection.End);
var tdp = textRange.GetPropertyValue(Inline.TextDecorationsProperty);
var textDecorations = tdp.Equals(DependencyProperty.UnsetValue)
? new TextDecorationCollection()
: tdp as TextDecorationCollection
?? new TextDecorationCollection();
var strikethroughs = textDecorations.Where(d => d.Location == TextDecorationLocation.Strikethrough)
.ToList();
if (strikethroughs.Any())
{
foreach (var strike in strikethroughs)
{
textDecorations.Remove(strike);
}
}
else
{
textDecorations.Add(TextDecorations.Strikethrough);
}
textRange.ApplyPropertyValue(Inline.TextDecorationsProperty, textDecorations);
這是一個很好的方式去了解這一點,還是我使它過於複雜?
你願意純粹XAML解決方案? – XAMlMAX 2015-03-03 09:45:51
道歉我誤解後,將XAML解決方案,我有隻允許一次在一個文本修飾。 – XAMlMAX 2015-03-03 10:16:31