дать текстовый блок поля, но только если есть контент - PullRequest
0 голосов
/ 22 ноября 2011

У меня есть 3 textblocks в stackpanel в DataTemplate.

идея в том, что формат должен быть как "abc" с пробелами между textblocks, но может случиться так, что textblocks "a" и "b" могут быть пустыми, поэтому я получаю что-то вроде этого " с "(два пробела до textblock с). Как я могу гарантировать, что у меня есть маржа, но только при наличии контента?

Ответы [ 3 ]

3 голосов
/ 22 ноября 2011

Если TextBlock s Visibility установлено на Collapsed, Margin не будет отображаться. Поэтому, я думаю, вы можете использовать StringToVisibilityConverter для установки Visibility на Collapsed, если Text пусто.

Пример

Сначала вам нужно создать такой конвертер.

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}}" />

Для получения дополнительной информации о том, как использовать конвертер, посмотрите этот пост .

Надеюсь, это поможет. :)

0 голосов
/ 22 ноября 2011

Поместите текстовые блоки в сетку, чтобы их местоположения были фиксированными.Добавьте конвертер в martin и привяжите его к свойству text, а если длина этого текста равна нулю, то установите для поля значение 0.

0 голосов
/ 22 ноября 2011

Добавьте конвертер в Margin и привяжите его к свойству Text. Пусть конвертер отправит поля равной толщине 0, если текстовое содержимое пустое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...