DataTemplate
에 stackpanel
에 3 3 textblocks
이 있습니다.텍스트 블록에는 여백이 있지만 내용이있는 경우에만 부여하십시오.
textblocks
사이에 공백이있는 형식이 "abc"와 같아야하지만 textblocks
"a"와 "b"가 비어있을 수 있으므로이 "c"와 (두 칸 앞에 textblock
c). 콘텐츠가있는 경우에만 마진을 확보하려면 어떻게해야합니까?
DataTemplate
에 stackpanel
에 3 3 textblocks
이 있습니다.텍스트 블록에는 여백이 있지만 내용이있는 경우에만 부여하십시오.
textblocks
사이에 공백이있는 형식이 "abc"와 같아야하지만 textblocks
"a"와 "b"가 비어있을 수 있으므로이 "c"와 (두 칸 앞에 textblock
c). 콘텐츠가있는 경우에만 마진을 확보하려면 어떻게해야합니까?
TextBlock
의 Visibility
을 Collapsed
으로 설정하면 Margin
이 표시되지 않습니다. 그래서 Text
이 비어 있다면 StringToVisibilityConverter
을 사용하여 Visibility
을 Collapsed
으로 설정할 수 있습니다.
예
먼저이 같은 컨버터를 작성해야합니다.
public class StringToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null)
return Visibility.Collapsed;
if (value != null && string.IsNullOrWhiteSpace(value.ToString()))
return Visibility.Collapsed;
return Visibility.Visible;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
다음이 변환기를 xaml에 포함시켜야합니다.
<converters:StringToVisibilityConverter x:Key="StringToVisibilityConverter " />
마지막으로 TextBlock
안에 사용하십시오.
<TextBlock x:Name="MyTextBlock" Text="{Binding SomeText}"
Visibility="{Binding SomeText, Converter={StaticResource StringToVisibilityConverter}}" />
변환기 사용 방법에 대한 자세한 내용은 this post을 참조하십시오.
는 도움이되기를 바랍니다. :)
여백에 변환기를 추가하고 Text
속성에 바인딩하십시오. 텍스트 내용이 비어 있으면 균일 한 두께 0
의 여백을 변환기에 보냅니다.
텍스트 블록을 그리드에 배치하여 위치가 고정되도록하십시오. 변환기를 마틴에 추가하고 텍스트 속성에 바인딩하고 텍스트의 길이가 0이면 여백을 0으로 설정합니다.
샘플이 있습니까? 나는 xaml에 익숙하지 않아 약간 녹슬지 않다. – Alex
그냥 약간의 샘플 코드를 추가했다 :) –
thanks! 그것은 잘 작동합니다! – Alex