WPF:无法设置转换器 - 启动应用程序时出错

时间:2011-04-07 11:42:24

标签: 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>
...

请帮助!

3 个答案:

答案 0 :(得分:46)

尝试将转换器引用为StaticResource

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

答案 1 :(得分:1)

忘了提到带有ElementName属性的绑定标记扩展可能吗?

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

答案 2 :(得分:0)

应该是

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