私は、人の名前、電子メール、部署などのリストを表示するリストボックスを持っています。各プロパティを表示するTextBlockがいくつかあります。これらのTextBlockの一つは、そのような電子メールアドレスを表示するには、ハイパーリンクをラップしている:TextBlockのハイパーリンク用のWPF - DataTemplate/Value Converter
<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のテキストを評価しているようなものです...
私はこれを理解するのを手伝ってください。
ありがとうございます!
あなたは電子メールがヌルではないと確信していますか? –