本文整理汇总了C#中System.Windows.Documents.Span.Reposition方法的典型用法代码示例。如果您正苦于以下问题:C# Span.Reposition方法的具体用法?C# Span.Reposition怎么用?C# Span.Reposition使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Windows.Documents.Span
的用法示例。
在下文中一共展示了Span.Reposition方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ApplyStructuralInlinePropertyAcrossInline
private static void ApplyStructuralInlinePropertyAcrossInline(TextPointer start, TextPointer end, TextElement commonAncestor, DependencyProperty formattingProperty, object value)
{
start = SplitFormattingElements(start, /*keepEmptyFormatting:*/false, commonAncestor);
end = SplitFormattingElements(end, /*keepEmptyFormatting:*/false, commonAncestor);
DependencyObject forwardElement = start.GetAdjacentElement(LogicalDirection.Forward);
DependencyObject backwardElement = end.GetAdjacentElement(LogicalDirection.Backward);
if (forwardElement == backwardElement &&
(forwardElement is Run || forwardElement is Span))
{
// After splitting we have exactly one Run or Span between start and end. Use it for setting the property.
Inline inline = (Inline)start.GetAdjacentElement(LogicalDirection.Forward);
// Set the property to existing element.
inline.SetValue(formattingProperty, value);
// Clear property value from all ancestors of this inline.
FixupStructuralPropertyEnvironment(inline, formattingProperty);
if (forwardElement is Span)
{
// Clear property value from all Span and Run children of this span.
ClearPropertyValueFromSpansAndRuns(inline.ContentStart, inline.ContentEnd, formattingProperty);
}
}
else
{
Span span;
if (commonAncestor is Span &&
start.GetPointerContext(LogicalDirection.Backward) == TextPointerContext.ElementStart &&
end.GetPointerContext(LogicalDirection.Forward) == TextPointerContext.ElementEnd &&
start.GetAdjacentElement(LogicalDirection.Backward) == commonAncestor)
{
// Special case when start and end are at parent Span boundaries.
// Don't need to create a new Span in this case.
span = (Span)commonAncestor;
}
else
{
// Create a new span from start to end.
span = new Span();
span.Reposition(start, end);
}
// Set property on the span.
span.SetValue(formattingProperty, value);
// Clear property value from all ancestors of this span.
FixupStructuralPropertyEnvironment(span, formattingProperty);
// Clear property value from all Span and Run children of this span.
ClearPropertyValueFromSpansAndRuns(span.ContentStart, span.ContentEnd, formattingProperty);
}
}