WPF: Привязка Видимости строковым содержанием

Хорошо, таким образом, вот мой XAML:

<TextBlock Text="{Binding Path=InstanceName}"></TextBlock>

Если InstanceName является пустым или пустая строка, я хочу Visibility="Collapsed". Иначе я хочу Visibility="Visible". Как я сделал бы это?

16
задан Dave Clemmer 17 September 2011 в 00:20
поделиться

5 ответов

Вы можете использовать Valueconverter:

<TextBlock 
     Visibility="{Binding InstanceName, Converter={local:StringNullOrEmptyToVisibilityConverter}}" 
     Text="{Binding InstanceName}"/>

со следующим кодом:

public class StringNullOrEmptyToVisibilityConverter : System.Windows.Markup.MarkupExtension, IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return string.IsNullOrEmpty(value as string) 
            ? Visibility.Collapsed : Visibility.Visible;
    }
    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return null;
    }
    public override object ProvideValue(IServiceProvider serviceProvider)
    {            
        return this;
    }
}
44
ответ дан 30 November 2019 в 15:47
поделиться

, если вы находитесь внутри (Data-) шаблон Вы можете использовать триггеры для этого.

В противном случае MVVM-Pattern или Valueconverter поможет вам.

3
ответ дан 30 November 2019 в 15:47
поделиться

путем внесения дополнительной собственности в вашу программу ViewModel, которую вы можете связать атрибут видимости:

public class ViewModel
{
   public string InstanceName {...}
   public Visibility InstanceVisibility 
   { 
      get 
      {
           return String.IsNullOrEmpty(InstanceName) ? Visibility.Collapsed : Visibility.Visible;
      }
}
1
ответ дан 30 November 2019 в 15:47
поделиться

Хорошо, так что это близко с Pybinding:

<TextBlock Text="{Binding Path=InstanceName}" Visibility="{p:PyBinding BooleanToVisibility(IsNotNull($[.InstanceName]))}"  ></TextBlock>

Мне нужно заменить isnotnull с чем-то, что означает isnotnullolemempty, но я ближе.

0
ответ дан 30 November 2019 в 15:47
поделиться
<TextBlock Text="{Binding Path=InstanceName},FallbackValue={x:Null}"></TextBlock>

Затем добавьте передач DataTrigger для проверки значения null и изменяют видимость с помощью установки. Это простой метод, который использует.

0
ответ дан 30 November 2019 в 15:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: