Я хочу, чтобы добавить кнопку в TextDecorations.Strikethrough
украшение к моему обычаю RichTextBox
я с помощью кода, приведенную ниже для добавления и удаления TextDecoration
Дело в том, что я получаю InvalidCastException: Unable to cast object of type 'MS.Internal.NamedObject' to type 'System.Windows.TextDecorationCollection'.
когда я выбрать диапазон больше, чем тот, который прошивается и нажимает кнопку «StrikeThrough».CustomRichTextBox зачеркивания TextDecoration
Мой код
private void StrikeOutButton_Click(object sender, RoutedEventArgs e)
{
TextRange range = new TextRange(this.MyRichTextBox.Selection.Start,
this.MyRichTextBox.Selection.End);
TextDecorationCollection tdc =
(TextDecorationCollection)this.MyRichTextBox.
Selection.GetPropertyValue(Inline.TextDecorationsProperty);
/*
if (tdc == null || !tdc.Equals(TextDecorations.Strikethrough))
{
tdc = TextDecorations.Strikethrough;
}
else
{
tdc = new TextDecorationCollection();
}
* */
if (tdc == null || !tdc.Contains(TextDecorations.Strikethrough[0]))
{
tdc = TextDecorations.Strikethrough;
}
else
{
tdc = new TextDecorationCollection();
}
range.ApplyPropertyValue(Inline.TextDecorationsProperty, tdc);
}
комментарий из кода тоже не работает.
Я собирался опубликовать ExceptionDetails, но я думаю, что это очень ясно.
Может ли кто-нибудь предоставить мне обходной путь?
это работает. Я использовал что-то подобное, когда я исправил это. для somereason ссылка i, предоставленная в качестве ответа, была удалена. –