Установка ширины TextBlock против Grid - PullRequest
0 голосов
/ 07 июня 2011

Если внутри Grid есть TextBlock, как лучше (с точки зрения производительности) установить его ширину и высоту?

Будет ли лучше задавать их в свойствах TextBlock, чем в качестве свойств Grid?1003 *

В основном я спрашиваю, какой из следующих вариантов лучше:

<Grid Width="200" Height="200">
    <TextBlock />
</Grid>

против

<Grid>
    <TextBlock Width="200" Height="200"/>
</Grid>

Ответы [ 4 ]

0 голосов
/ 07 июня 2011

У меня нет статистики, подтверждающей это, но поскольку движок рендеринга / компоновки WPF работает, сначала измеряя дочерние элементы всего, можно предположить, что если вы вручную определите размер дочернего элемента, это будет иметь незначительный эффект .

В этом сценарии, если все, что вы делаете, - это обертывание одного элемента TextBlock, вам лучше использовать что-то вроде <Border>. Если есть несколько элементов, посмотрите, можете ли вы использовать <StackPanel>.

0 голосов
/ 07 июня 2011

Я действительно не совсем понимаю, о чем вы спрашиваете!


Но мне действительно нравится устанавливать мою сетку , которая будет растягиваться как Window, и устанавливать мою TextBox Ширина и высота для авто или NAN ,, затем задайте специальные поля и выравнивания для моего Текстовое поле

0 голосов
/ 07 июня 2011
<Grid Width="200" Height="200">
    <TextBlock />
</Grid>

Использование сетки исключительно для ограничения TextBox не очень хороший способ установить ширину TextBox. Сетка больше для размещения нескольких элементов управления. Однако это вполне приемлемо:

<Grid Width="200" Height="200">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="200" />
        <ColumnDefinition Width="1*" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>

    <TextBlock Grid.Column="1" HorizontalAlignment="Stretch" Margin="5,0" />
</Grid>

Это похоже на то, что предложил @Ahmed.

Как правило, при использовании макета XAML рекомендуется использовать пропорциональный макет, а не фиксированные размеры, чтобы размер пользовательского интерфейса можно было корректно изменить с минимальным контролем любого кода. Это означает, что хорошо, чтобы родительский элемент диктовал размер как можно больше, используя только фиксированные размеры там, где это необходимо. (Настройка MinWidth / MaxWidth / etc подойдет, просто старайтесь избегать явной установки Width, где это возможно, то же самое относится и к свойствам Height).

0 голосов
/ 07 июня 2011

В статье Layout System о MSDN есть небольшой раздел, посвященный производительности, но есть также отдельная статья о , оптимизирующая производительность макета и дизайна . Может быть, там есть что-то полезное.

Мне кажется, что эта документация не претендует на эту проблему, хотя, вероятно, это не имеет значения, или разница ничтожно мала.

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