J'ai un ListBox montrant une liste des noms des personnes, des emails, des départements, etc. Il y a un DataTemplate qui a quelques TextBlocks pour afficher chaque propriété. L'un de ces TextBlocks est enroulant un lien hypertexte pour afficher les adresses e-mail comme ceci:WPF - DataTemplate/Value Converter pour le lien hypertexte dans TextBlock
<TextBlock>
<Hyperlink NavigateUri="{Binding Email}">
<TextBlock Text="{Binding Email}" />
</Hyperlink>
</TextBlock>
Cela fonctionne très bien, mais si la personne ne possède pas d'adresse e-mail, le TextBlock n'est pas effondré automatiquement. J'ai donc écrit un convertisseur de valeur et utilisé dans le style comme si (simplifié):
string s = (String) value;
if (s == ""){
return Visibility.Collapsed;
}
return Visibility.Visible;
Et c'est le style en utilisant le ValueConverter:
<Style x:Key="ResultItemTextBoxStyle">
<Setter Property="TextBlock.Visibility" Value="{Binding Path=Text, RelativeSource={RelativeSource Self},
Converter={StaticResource StringToVisibilityConverter}}"/>
</Style>
Et j'ai ajouté le style appelant le convertisseur à la TextBlock:
<TextBlock Style="{StaticResource ResultItemTextBoxStyle}">
<Hyperlink NavigateUri="{Binding Email}">
<TextBlock Text="{Binding Email}" />
</Hyperlink>
</TextBlock>
Après ce changement, l'adresse e-mail est jamais montré - Dans le convertisseur de valeur, le texte de la TextBlock est toujours vide et il retourne Visibility.Collapsed. C'est comme si elle évaluait le texte du TextBlock avant que le lien hypertexte soit chargé ou quelque chose ...
Aidez-moi à comprendre cela.
Merci!
Etes-vous sûr que le courrier électronique n'est pas nul? –