Подтвердить что ты не робот

WPF: невозможно установить конвертер - ошибка при запуске приложения

Я хочу установить TextBlock в видимый/спящий режим в зависимости от привязанного значения. Это не работает, и я получаю это сообщение, когда хочу отлаживать свое приложение:

Установить свойство "System.Windows.Data.Binding.Converter" - исключение.

Значение, связанное с привязкой, имеет тип Uri. Существует внутренний InvalidCastException, который гласит:

Невозможно применить объект типа "System.String" к типу "System.Windows.Data.IValueConverter".

Здесь мой конвертер:

public class VisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, 
        object parameter, CultureInfo culture)
    {
        if (value is string && string.IsNullOrEmpty(value as string))
        {
            return Visibility.Collapsed;
        }
        else if (value == null)
        {
            return Visibility.Collapsed;
        }
        else
        {
            return Visibility.Visible;
        }
    }

    public object ConvertBack(object value, Type targetType, 
        object parameter, CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}

И вот XAML, который выдает исключение:

...
<Page.Resources>
    <converters:VisibilityConverter x:Key="visibilityConverter" />
</Page.Resources>
...
<TextBlock Visibility="{Path=UrlAddress, Converter=visibilityConverter}">
    This never works!
</TextBlock>
...

Помогите, пожалуйста!

4b9b3361

Ответ 1

Попробуйте ссылаться на ваш конвертер как на StaticResource.

<TextBlock Visibility="{Binding Path=UrlAddress, Converter={StaticResource visibilityConverter}}"> 

Ответ 2

забыл упомянуть расширение Binding Markup Extension с атрибутом ElementName?

<TextBlock Visibility="{Binding ElementName=XXX, Path=UrlAddress, Converter={StaticResource visibilityConverter}}">  `

Ответ 3

Должно быть

 <TextBlock Visibility="{Path=UrlAddress, Converter={StaticResource visibilityConverter}}">`