#wpf #text-alignment #dockpanel
#wpf #выравнивание текста #dockpanel
Вопрос:
В xaml DataTemplate
у меня есть
<DockPanel >
<StackPanel DockPanel.Dock="Right" Orientation="Vertical">
<Button />
<Button />
</StackPanel>
<Grid VerticalAlignment="Stretch/Center">
<TextBlock HorizontalAlignment="Stretch"
TextAlignment="Right"
Text="{Binding ...}"
VerticalAlignment="Stretch"
DockPanel.Dock="Right"/>
</Grid>
</DockPanel>
Панель dockpanel горизонтальна, т.Е. stackpanel находится справа, сетка слева.
Мне нужны две кнопки, чтобы растянуть каждую на 50% от вертикального пространства высоты dockpanel. Как мне это сделать?
Схематическое изображение того, чего я пытаюсь достичь. Элементы управления должны максимально растягиваться до границ.
Мне нужно, чтобы текстовый блок растягивался до 100% вертикального пространства высоты dockpanel, а текст должен быть центрирован по вертикали. Это не работает до н.Э. в случае Strech я получаю 100% пробел, но текст находится сверху по вертикали, а в случае Center текстовый блок не растягивается.
Комментарии:
1. Я не слежу. Вы хотите
TextBlock
, чтобы сверху были кнопки? Пожалуйста, разместите фотографию того, что вы хотите.2. Панель dockpanel горизонтальна, т.Е. stackpanel находится справа, сетка слева.
3. Где должен отображаться текст? A
TextBlock
не может одновременно «растягиваться до 100% вертикального пространства», а также, очевидно, быть центрированным по вертикали.4. Почему это очевидно, что я этого не понимаю? Вы имеете в виду, что размер текстового блока всегда ограничен его текстом?
5. Почему вы хотите
TextBlock
растянуть? Текстовый блок — это просто текст, и вы также говорите, что хотите, чтобы текст был посередине …? Еще раз, пожалуйста, опубликуйте картинку того, что вы на самом деле хотите. Это все еще неясно.
Ответ №1:
A TextBlock
не может одновременно «растягиваться до 100% вертикального пространства», а также быть центрированным по вертикали. В конце концов, это просто текст.
Вы должны быть в состоянии избавиться от StackPanel
и заменить DockPanel
на 2×2 Grid
. Что-то вроде этого:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Button Grid.Column="1" Content="Button1" />
<Button Grid.Column="1" Content="Button2" Grid.Row="1" />
<Grid Grid.RowSpan="2">
<TextBlock Grid.RowSpan="2"
TextAlignment="Right"
Text="Text..."
VerticalAlignment="Center"
HorizontalAlignment="Center"/>
</Grid>
</Grid>