У меня есть ListBox, показывающий список имен людей, электронных писем, отделов и т. Д. Существует DataTemplate, в котором есть несколько текстовых блоков для отображения каждого свойства. Один из этих TextBlocks заключает в себе гиперссылку для отображения адресов электронной почты, например:
<TextBlock>
<Hyperlink NavigateUri="{Binding Email}">
<TextBlock Text="{Binding Email}" />
</Hyperlink>
</TextBlock>
Это работает нормально, но если у человека нет адреса электронной почты, TextBlock не будет свернут автоматически. Поэтому я написал конвертер значений и использовал его в таком стиле (упрощенно):
string s = (String) value;
if (s == ""){
return Visibility.Collapsed;
}
return Visibility.Visible;
И это стиль, использующий ValueConverter:
<Style x:Key="ResultItemTextBoxStyle">
<Setter Property="TextBlock.Visibility" Value="{Binding Path=Text, RelativeSource={RelativeSource Self},
Converter={StaticResource StringToVisibilityConverter}}"/>
</Style>
И я добавил стиль вызова конвертера в TextBlock:
<TextBlock Style="{StaticResource ResultItemTextBoxStyle}">
<Hyperlink NavigateUri="{Binding Email}">
<TextBlock Text="{Binding Email}" />
</Hyperlink>
</TextBlock>
После этого изменения адрес электронной почты никогда не отображается - в конвертере значений текст TextBlock всегда пуст и возвращает Visibility.Collapsed. Это похоже на оценку текста TextBlock перед загрузкой гиперссылки или чем-то ...
Пожалуйста, помогите мне разобраться с этим.
Спасибо!