Нужен способ центрировать TextBox под Canvas в WPF Designer - PullRequest
1 голос
/ 27 января 2010

Я новичок в использовании WPF Designer в VS2008 и сейчас очень мало знаю об этом. Я пытаюсь учиться с помощью экспериментов.

Ниже мой XAML (генерируемый в основном VS):

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="478" />
        <RowDefinition Height="64*" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="478" />
        <ColumnDefinition Width="140*" />
    </Grid.ColumnDefinitions>
    <Canvas Name="canvas1" Margin="0" />
    <TextBox Grid.Row="1" Grid.Column="0" Name="textBox1" HorizontalAlignment="Center" Width="120" VerticalAlignment="Top" Margin="0,5" Height="25" />
</Grid>

Как видите, мой холст находится сверху, а текстовое поле - под ним. Я хочу, чтобы текстовое поле было отцентрировано горизонтально по ширине моего холста. Чтобы добиться этого, я установил ширину столбца равной 478, то есть ширину, которой я хочу, чтобы мой холст был.

Это эффективный способ сделать это? Мне не очень нравится решение, мне кажется, что должен быть лучший способ. Имейте в виду, что «клиентский прямоугольник» моего холста должен быть 478, что означает, что мне, вероятно, придется позже изменить размер холста во время выполнения, чтобы убедиться, что это именно тот размер. Этот конкретный макет должен быть выполнен таким образом, чтобы текстовое поле правильно перенастраивалось в горизонтальном положении, чтобы оно оставалось по центру под холстом, если изменяется размер холста.

Как бы это сделали другие?

1 Ответ

3 голосов
/ 27 января 2010

Вы можете обернуть холст и текстовое поле в другой контейнер, например, в StackPanel. Установите ширину контейнера на 478, затем установите холст и текстовое поле, чтобы заполнить ширину контейнера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...