В частности, я хотел бы, чтобы пользователь щелкнул правой кнопкой мыши в TextBox, выяснил и сохранил позицию индекса в тексте, где произошел щелчок правой кнопкой мыши, а затем вставил немного текста в эту позицию, как толькопользователь делает выбор из контекстного меню, которое появляется из-за щелчка правой кнопкой мыши.
Сложная часть заключается в получении позиции индекса на основе координат щелчка правой кнопкой мыши.
Это вSilverlight 4.
private int _insertPoint;
private void userNotification_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
{
// Move and open the context menu relative to its container.
contextMenu.HorizontalOffset = e.GetPosition(container).X;
contextMenu.VerticalOffset = e.GetPosition(container).Y;
contextMenu.IsOpen = true;
// Get the click coordinates relative to the TextBox.
int clickX = e.GetPosition(textBox).X;
int clickY = e.GetPosition(textBox).Y;
_insertPoint = ?; // Here's the problem.
}
private void SelectFieldToInsert(object sender, MouseButtonEventArgs e)
{
// Close the context menu.
contextMenu.IsOpen = false;
var item = sender as ListBoxItem;
textBox.Text = textBox.Text.Insert(_insertPoint, "<" + item.Content + ">");
}