Как установить размер текстового блока, чтобы он всегда соответствовал связанным данным?

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

Иногда есть данные «Связывание позади», иногда это одно слово, иногда это пара слов, а иногда данных нет вообще. Как я могу установить их рядом друг с другом независимо от данных?

<TextBlock x:Name="sessionNameTextBlock" Margin="0,0,1123,9.8" Text="{Binding CurrentSessionName}" VerticalAlignment="Bottom" FontSize="48" TouchUp="sessionNameTextBlock_TouchUp" MouseUp="sessionNameTextBlock_MouseUp" Height="57" Background="#FFE81616"/>
<Border x:Name="SessionEditorButton" BorderBrush="Black" BorderThickness="0" Margin="48,0,1027,9.8" MouseUp="SessionEditorButton_MouseUp" TouchUp="SessionEditorButton_TouchUp" Background="#FFF91515" Height="57" VerticalAlignment="Bottom">
   <Image x:Name="image" Margin="10,10,9.8,10.6" Source="/EZ3D;component/Resources/ez3d_edit.png"/>
</Border>
<TextBlock x:Name="sessionCommentsTextBlock" Margin="144,0,975,9.8" Text="{Binding CurrentSessionComments}" MouseUp="sessionCommentsTextBlock_MouseUp" TouchUp="sessionCommentsTextBlock_TouchUp" FontSize="18.667" Background="#FFF41515" Height="57" VerticalAlignment="Bottom"/>

Текущее состояние таково: введите здесь описание изображения

Или, если я изменю его размер вручную: введите здесь описание изображения

Я хотел бы иметь следующее:

------------- Видение----------------

В первом исполнении содержимое будет «S» и «E», а во втором — «Что угодно... и т. д.» и «Комментарии... и т. д.». Таким образом, размер TextBlock будет изменяться в зависимости от его содержимого. введите здесь описание изображения


person Khalil Khalaf    schedule 14.03.2016    source источник
comment
Итак, вы хотите, чтобы размер первого и третьего TextBlock соответствовал их содержимому? В чем состоят эти 3 элемента?   -  person CodingGorilla    schedule 14.03.2016
comment
Правильный. Я хочу, чтобы любой TextBlock был равен его содержимому. Эти три элемента находятся в одном ряду большой сетки.   -  person Khalil Khalaf    schedule 14.03.2016
comment
Значит, они будут ограничены размером сетки, верно? Что происходит, когда они больше (шире), чем сетка?   -  person CodingGorilla    schedule 14.03.2016
comment
В зависимости от того, какой размер я установил в дизайнере, все, что выходит за границы, просто исчезнет. Что не круто. Должен ли я поместить их в StackPanel? но .. Я не думаю, что это решение, оно должно быть проще, верно?   -  person Khalil Khalaf    schedule 14.03.2016
comment
Если вы не используете табличный формат, я бы использовал StackPanel, но это может не решить проблему. Является ли содержимое переменным или остается неизменным после загрузки окна?   -  person CodingGorilla    schedule 14.03.2016
comment
Нет, это переменная, пользователь может переименовывать сеанс и/или редактировать комментарии.   -  person Khalil Khalaf    schedule 14.03.2016
comment
Давайте продолжим это обсуждение в чате.   -  person CodingGorilla    schedule 14.03.2016


Ответы (1)


Таким образом, следующий XAML ведет себя так, как вы просили для меня.

<StackPanel Orientation="Horizontal">
    <TextBlock x:Name="tb1" Text="Test" />
    <Border x:Name="SessionEditorButton" BorderBrush="Black" BorderThickness="0" Background="#FFF91515" Height="57" VerticalAlignment="Bottom">
        <Image x:Name="image" Margin="10,10,9.8,10.6" />
    </Border>
    <TextBlock x:Name="tb2" Text="Test 2"/>
</StackPanel>

Конечно, это работает в очень надуманном примере, но все сводится к тому, что TextBlocks будут автоматически изменять свой размер, если в их контейнере есть место для этого. В этом случае мой StackPanel заполняет окно, так что есть много места для изменения размера TB. Возможно, вам придется просмотреть иерархию контейнеров, чтобы выяснить, какой контейнер ограничивает ваши текстовые блоки.

person CodingGorilla    schedule 14.03.2016
comment
Это не сработало, поскольку копипаста по-прежнему скрывает часть текста. Я также добавил StackPanel к некоторым примерам, которые также не работали. - person Khalil Khalaf; 14.03.2016
comment
Однако это может быть только мой дизайнер. Так это ответ - person Khalil Khalaf; 16.03.2016