Ich habe eine ListBox mit einer Liste von Personen Namen, E-Mails, Abteilungen usw. Es gibt eine DataTemplate, die ein paar TextBlocks hat, um jede Eigenschaft anzuzeigen. Eines dieser Textblocks wird Umwickeln eines Hyperlink E-Mail-Adressen zu zeigen, wie so:WPF - DataTemplate/Wert Konverter für Hyperlink in TextBlock
<TextBlock>
<Hyperlink NavigateUri="{Binding Email}">
<TextBlock Text="{Binding Email}" />
</Hyperlink>
</TextBlock>
Dies funktioniert gut, aber wenn die Person nicht eine E-Mail-Adresse hat, wird der Textblock nicht automatisch zusammenbrach. Also schrieb ich einen Wertkonverter und im Stil verwendet, wie so (vereinfacht):
string s = (String) value;
if (s == ""){
return Visibility.Collapsed;
}
return Visibility.Visible;
Und das ist die Art des Valueconverter mit:
<Style x:Key="ResultItemTextBoxStyle">
<Setter Property="TextBlock.Visibility" Value="{Binding Path=Text, RelativeSource={RelativeSource Self},
Converter={StaticResource StringToVisibilityConverter}}"/>
</Style>
Und ich hinzugefügt, um den Stil ruft den Konverter an den TextBlock-:
<TextBlock Style="{StaticResource ResultItemTextBoxStyle}">
<Hyperlink NavigateUri="{Binding Email}">
<TextBlock Text="{Binding Email}" />
</Hyperlink>
</TextBlock>
Nach dieser Änderung wird die E-Mail-Adresse niemals angezeigt - im Wertwandler, der Text des Textblockes ist immer leer und es gibt Visibility.Collapsed. Es ist, als ob es den Text des TextBlocks auswertet, bevor der Hyperlink geladen wird oder etwas ...
Bitte helfen Sie mir, dieses herauszufinden.
Danke!
Sind Sie sicher, dass die E-Mail-Adresse nicht null ist? –