我想根据绑定值将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>
...
请帮助!
答案 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}}">`