Silverlight – get insertion position in TextBox

How to get the insertion position (x,y) in the visible client area of ​​the TextBox control? I need to add auto-completion in the text box.

I found a solution for WPF, but it cannot be applied in Silverlight.

public class AutoCompleteTextBox: TextBox
{
public Point GetPositionFromCharacterIndex(int ​​index)
{
if (TextWrapping == TextWrapping.Wrap) throw new NotSupportedException();

var text = Text.Substring(0, index);

int lastNewLineIndex = text.LastIndexOf(' ');

var leftText = lastNewLineIndex != -1? text.Substring(lastNewLineIndex + 1): text;

var block = new TextBlock
{
FontFamily = FontFamily,
FontSize = FontSize,
FontStretch = FontStretch,
FontStyle = FontStyle,
FontWeight = FontWeight
};

block. Text = text;
double y = block.ActualHeight;

block.Text = leftText;
double x = block.ActualWidth;

var scrollViewer = GetTemplateChild("ContentElement") as ScrollViewer;

var point = scrollViewer != null
? New Point(x-scrollViewer.HorizontalOffset, y-scrollViewer.VerticalOffset)
: new Point(x, y);
point.X += BorderThickness.Left + Padding.Left;
point.Y += BorderThickness.Top + Padding.Top;

return point;
}
}

How to get the insertion position (x,y) in the visible client area of ​​the TextBox control? I need to add auto-completion in the text box.

I found a solution for WPF, but it cannot be applied in Silverlight.

public class AutoCompleteTextBox: TextBox
{
public Point GetPositionFromCharacterIndex(int ​​index)
{
if (TextWrapping == TextWrapping.Wrap) throw new NotSupportedException( );

var text = Text.Substring(0, index);

int lastNewLineIndex = text.LastIndexOf(' ');

var leftText = lastNewLineIndex != -1? text.Substring(lastNewLineIndex + 1): text;

var block = new TextBlock
{
FontFamily = FontFamily,
FontSize = FontSize,
FontStretch = FontStretch,
FontStyle = FontStyle,
FontWeight = FontWeight
};

block.Text = text;
double y = block.ActualHei ght;

block.Text = leftText;
double x = block.ActualWidth;

var scrollViewer = GetTemplateChild("ContentElement") as ScrollViewer;

var point = scrollViewer != null
? new Point(x-scrollViewer.HorizontalOffset, y-scrollViewer.VerticalOffset)
: new Point(x, y);
point .X += BorderThickness.Left + Padding.Left;
point.Y += BorderThickness.Top + Padding.Top;

return point;
}
}

WordPress database error: [Table 'yf99682.wp_s6mz6tyggq_comments' doesn't exist]
SELECT SQL_CALC_FOUND_ROWS wp_s6mz6tyggq_comments.comment_ID FROM wp_s6mz6tyggq_comments WHERE ( comment_approved = '1' ) AND comment_post_ID = 4035 ORDER BY wp_s6mz6tyggq_comments.comment_date_gmt ASC, wp_s6mz6tyggq_comments.comment_ID ASC

Leave a Comment

Your email address will not be published.