Текстовое поле с шириной Auto не имеет отступов внутри себя, границы текстового поля подпирают текст, выделить его с правого края крайне неудобно. Если задать Padding, то и курсор при наведении на получившийся отступ будет Arrow, и при клике с дальнейшем движении мыши влево выделения не произойдет. Таких проблем не возникает, если немного увеличить ширину текстового поля. Но нельзя - предполагается ввод текста.
В VS в редактируемых строках элементов интерфейса есть отступ.
В Word также отступы с трех сторон позволяют выделять текст при клике за границами текстовых символов (только слева поле имеет другие свойства). Что я сделал:
<Canvas Height="{Binding ElementName=tbEdit, Path=ActualHeight}">
<TextBox Name="tbEdit" Text="MainWindow.xaml"
Padding="0,0,20,0"
MouseEnter="TextBox_MouseEnter"
PreviewMouseDown="TextBox_MouseDown"
TextChanged="TextBox_TextChanged"
>
</TextBox>
</Canvas>
void TextBox_MouseEnter(object sender, MouseEventArgs e)
{
var tbEdit = sender as TextBox;
tbEdit.Cursor = Cursors.IBeam;
}
void TextBox_MouseDown(object sender, MouseButtonEventArgs e)
{
var tbEdit = sender as TextBox;
var widthTextBox = tbEdit.ActualWidth;
tbEdit.Padding = new Thickness(0);
tbEdit.MinWidth = widthTextBox;
}
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
TextBox tbEdit = sender as TextBox;
double pad = 20.0;
if (tbEdit.Padding.Right < pad)
{
tbEdit.MinWidth = 10;
tbEdit.Padding = new Thickness(0, 0, pad, 0);
}
}
Вопрос: можно ли сделать проще?
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости