사람들의 이름, 전자 메일, 부서 등의 목록을 보여주는 ListBox가 있습니다. 각 속성을 표시 할 TextBlock이 몇 개인 DataTemplate이 있습니다. 이 TextBlocks 중 하나는과 같이 이메일 주소를 표시하는 하이퍼 링크를 포장한다 :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의 텍스트를 평가하는 것과 같습니다 ...
이 그림을 이해하는 데 도움주세요.
감사합니다.
이메일이 null이 아니십니까? –