GetCharacterIndexFromPoint in Silverlight

本文关键字:Silverlight in GetCharacterIndexFromPoint | 更新日期: 2023-09-27 18:19:17

在Silverlight中是否有对应的GetCharacterIndexFromPoint ?或任何其他方法来确定,我的对象被放置在哪里(从拖放方法)?

GetCharacterIndexFromPoint in Silverlight

你最好的选择是使用RichTextBox。GetPositionFromPoint

由于Silverlight支持GetRectFromCharacterIndex(),您可以使用它来重新实现GetCharacterIndexFromPoint()(但它可能会更慢,不幸的是不支持snapToText参数)。

类似于(未经测试):

public static int GetCharacterIndexFromPoint(this TextBox textBox, Point point)
{
    try {
        return Enumerable.Range(0, textBox.Text.Length).First(
            index => {
                Rectangle rect = textBox.GetRectFromCharacterIndex(index, false);
                rect.Union(textBox.GetRectFromCharacterIndex(index, true));
                return rect.Contains(point);
            });
    } catch (InvalidOperationException) {
        // No character lies at specified point.
        return -1;
    }
}