我想根据绑定值将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}}">`