С WPF, как свернуть TextBlock в зависимости от содержимого его дочернего TextBlock? - PullRequest
1 голос
/ 17 апреля 2009

Я должен отобразить большой список свойств / значений. Моя проблема в том, что нет значений для всех этих свойств, поэтому я не хотел бы отображать их в этом случае.

Будет легче понять мою проблему с некоторым кодом:

<StackPanel DataContext=...>
<TextBlock>Info1:<TextBlock Text={Binding Path=Info1} /></TextBlock>
<TextBlock>Info2:<TextBlock Text={Binding Path=Info2} /></TextBlock>
<TextBlock>Info3:<TextBlock Text={Binding Path=Info3} /></TextBlock>
</StackPanel>

В основном, в зависимости от содержимого дочернего TextBlock, я хотел бы свернуть родительский TextBlock. Моя идея состояла в том, чтобы использовать стиль, который применяется ко всему TextBlock, и проверять содержимое, а если его нет, свернуть родительский элемент ... к сожалению, мне не удается получить доступ к родительскому элементу из DataTrigger. Возможно, у вас будет более изящное решение:)

Большое спасибо за вашу помощь!

Ответы [ 2 ]

2 голосов
/ 17 апреля 2009

Вы можете привязать видимость внешнего текстового блока к тексту внутреннего текстового блока, используя простой конвертер:

<TextBlock Name="outer1" 
           Visibility="{Binding ElementName=inner1, Path=Text, Converter={StaticResource MyConverter}}">
    Info1:<TextBlock Name="inner1" Text="{Binding Path=Info1}" />
</TextBlock>

или привязать видимость внешнего текстового блока непосредственно к Info1:

 <TextBlock Visibility="{Binding Path=Info1, Converter={StaticResource MyConverter}}">
    Info1:<TextBlock Text="{Binding Path=Info1}" />
</TextBlock>
1 голос
/ 14 декабря 2009

Если вы находитесь внутри шаблона или стиля, вы можете использовать триггеры, чтобы установить видимость внешнего текстового блока.

Например, в случае DataTemplate :

<DataTemplate.Triggers>
    <DataTrigger Binding="{Binding Path=Info1}" Value="">
        <Setter Property="Visibility" TargetName="pnlInfo1" Value="Hidden" />
    </DataTrigger>
    <!-- and so on ... -->
</DataTemplate.Triggers>

Настройте курок в соответствии с вашими потребностями. Например, вы можете скрыть его, когда он равен null, или использовать конвертер, поскольку gcores предлагает сделать более необычную проверку.

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