在我的画布的PreviewMouseDown事件处理程序中,我确实按以下方式对底层textBlock进行了测试。命中测试正确返回内联集合的Run元素。那么为什么相同的run元素(内联类型)没有被textBlock视为“包含”呢?
void CustomInkCanvas_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
CustomInkCanvas cink = sender as CustomInkCanvas;
TextBlock tb = GetVisualChild<TextBlock>(cink);
Point p = e.GetPosition(tb);
/** THIS IS CORRECT AND RETURNS THE CORRECT VALID RUN (of type Inline).
Run run = tb.InputHitTest(p) as Run;
??? BUT DEBUG HERE STATES THAT THE RUN IS NOT CONTAINED BY THE TEXTBLOCK ??
Debug.Assert(tb.Inlines.Contains(run) != true, "Where is the run?");
}谢谢您对此提供的任何指导。
发布于 2015-02-20 08:18:09
Run可能是Inline之一的(直接或间接)子元素,因此它本身不是顶级内联集合的元素。
在下面的XAML中,Inline集合包含两个元素,一个是Run,另一个是Bold。另一个运行是Bold元素的子元素。
<TextBlock>
<TextBlock.Inlines>
<Run Text="Hello,"/>
<Bold>
<Run Text="World."/>
</Bold>
</TextBlock.Inlines>
</TextBlock>https://stackoverflow.com/questions/28620585
复制相似问题