Я предполагаю, что ваш TextBox
контейнер делает его слишком большим.
Попробуйте следующий XAML в Kaxaml :
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid VerticalAlignment="Center" HorizontalAlignment="Center">
<TextBox Text="Sample text" FontSize="2" />
</Grid>
</Page>
Это выглядит как очень маленькое текстовое поле в центре страницы. Если вы удалите VerticalAlignment="Center"
и HorizontalAlignment="Center"
из контейнера, текстовое поле будет очень большим.
Горизонтальное и вертикальное выравнивание по умолчанию для Grid
и TextBox
: Stretch
, что в основном означает, что элементу все равно, и он примет то, что ему дали. Таким образом, механизм макета спрашивает TextBox
, насколько он должен быть большим, и не получает ответа, и поэтому макет запрашивает Grid
. Grid
это тоже не волнует, и в итоге он запрашивает Page
/ Window
, который имеет фиксированный размер, и затем этот размер распространяется вниз по визуальному дереву (принимая во внимание любые поля и отступы по пути) , В итоге TextBox
заполняет всю область.
Чтобы доказать это, переместите атрибуты выравнивания с Grid
на TextBox
. Вы не можете видеть разницу визуально, хотя, если вы установите цвет фона для сетки, вы бы.
<Grid Background="Red">
<TextBox VerticalAlignment="Center" HorizontalAlignment="Center"
Text="Sample text" FontSize="2" />
</Grid>
Если вы хотите втиснуть рамку текстового поля прямо в текст, вы также можете установить Padding="0"
в самом текстовом поле.
См. в этой статье для получения дополнительной информации о системе макетов WPF.