В 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>
Панель дока горизонтальная, т.е. панель стека справа, сетка слева.
Мне нужно, чтобы две кнопки растянулись на 50% вертикального пространства высоты док-панели. Как мне это сделать?
Схематическое изображение того, чего я пытаюсь достичь. Элементы управления должны максимально растягиваться до границ.
Мне нужно, чтобы текстовый блок растянулся на 100% вертикального пространства высоты док-панели, а текст был вертикально центрирован. Не работает бк. в случае Strech я получаю 100% пространство, но текст вертикально сверху, а в случае Center текстовый блок не растягивается.
Панель дока горизонтальная, т.е. панель стека справа, сетка слева.
Где должен отображаться текст? TextBlock
не может одновременно «растягиваться на 100% вертикального пространства» и, очевидно, быть центрированным по вертикали.
Почему это очевидно, я не понимаю? Вы имеете в виду, что размер TextBlock всегда ограничен размером текста?
Почему вы хотите, чтобы TextBlock
растягивался? TextBlock - это просто текст, и вы также говорите, что хотите текст посередине...? Опять же, пожалуйста, опубликуйте фотографию того, что вы на самом деле хотите. Это все еще неясно.
Не мой вечер - картинка в ворде доставляет мне всякие неприятности. Вы правы, глупо растягивать TextBlock. Настоящая причина в том, что я пытаюсь точно имитировать DataGridTextColumn, я хочу, чтобы мой DataGridTemplateColumn был/вел себя точно так же. Вероятно, мне придется отказаться от этой идеи.
Как DataGridTextColumn
связан с этим вопросом?
Я пытаюсь имитировать DataGridTextColumn через DataGridTemplateColumn. Я использую TextBlock в DataTemplate его CellTemplate (как указано выше) и TextBox в DataTemplate его CellEditingTemplate. Это работает, но теперь я пытаюсь получить подробности, такие как переход в режим редактирования после нажатия клавиши и выравнивание (вопрос выше), равное DataGridTextColumn.
Извините, я не могу понять, как DockPanel
с двумя кнопками относится к DataGridTextColumn
.
Я добавил картинку. Это содержимое одного DataGridCell в DataGridTemplateColumn.
TextBlock
не может одновременно «растягиваться на 100% вертикального пространства» и быть центрированным по вертикали. Ведь это просто текст.
Вы должны быть в состоянии избавиться от StackPanel
и заменить DockPanel
на 2x2 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>
Я не следую. Хотите
TextBlock
над кнопками? Пожалуйста, опубликуйте фото того, что вы хотите.