Я использую текстовое поле для окна входа в систему.Я хочу, чтобы текстовое поле отображало «Имя пользователя» светло-серым, чтобы пользователь знал, как использовать это поле для ввода имени пользователя.Всякий раз, когда пользователь нажимает на текстовое поле, даже если оно находится в середине слова username, я хочу, чтобы курсор переместился на первую позицию, а имя пользователя исчезнет, когда они начнут печатать.Я попытался использовать событие PreviewMouseDown, но оно работает только внутри точек останова, но не срабатывает вообще за его пределами.Используя событие PreviewMouseUp, оно работает, но другие позиции каретки можно выбрать до того, как курсор переместится в начало.Я хочу, чтобы это выглядело так, как будто пользователь не может выбрать любую позицию курсора, кроме первой.Это код, который я пробовал.
private bool textboxuserfirstchange = true;
private void eventTextChanged(object sender, TextChangedEventArgs e)
{
if (textBoxUser.Text != "Username")
{
if (textboxuserfirstchange)
{
textBoxUser.Text = textBoxUser.Text[0].ToString();
textBoxUser.SelectionStart = 1;
textBoxUser.Opacity = 100;
}
textboxuserfirstchange = false;
}
}
private void eventPreviewMouseDown(object sender, MouseButtonEventArgs e)
{
if (textboxuserfirstchange)
{
textBoxUser.Focus();
textBoxUser.Select(0, 0); //None of these working
textBoxUser.SelectionStart = 0;
textBoxUser.CaretIndex = 0;
}
}