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



我想根据绑定值将TextBlock设置为可见/折叠模式。它不起作用,当我想调试我的应用程序时,我得到这个消息:

设置System.Windows.Data.Binding属性。转换器抛出异常。

被绑定的值类型为Uri。有一个内部的InvalidCastException写着:

无法强制转换"System"类型的对象。String' to type '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>
...

帮助,谢谢!

尝试将转换器引用为StaticResource

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

忘记提到绑定标记扩展与ElementName属性可能?

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

应该是

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

相关内容

最新更新