我对XAML名称空间声明感到困惑。 请帮助澄清我的情况。我在CoTraveller名称空间中有BooleanToObjectConverter类:IValueConverter:
return new Proxy(context, handler) as IFunction;
}
我想在App资源中使用FalseObject和TrueObject属性,例如:
evaluate()
但是有错误:严重级代码描述项目文件行抑制状态 错误XLS0415在类型'BooleanToObjectConverter'中找不到可连接属性'FalseObject'。 CoTraveller App.xaml 11
出什么问题了?
答案 0 :(得分:0)
从DependencyObject派生以便能够使用可绑定的DependencyProperties:
public class BooleanToObjectConverter: DependencyObject, IValueConverter
{
public Image FalseObject
{
get
{
return (Image)GetValue(FalseObjectProperty);
}
set
{
SetValue(FalseObjectProperty, value);
}
}
public static readonly DependencyProperty FalseObjectProperty =
DependencyProperty.Register(
"FalseObject",
typeof(Image),
typeof(BooleanToObjectConverter<Image>),
new PropertyMetadata(null));
public Image TrueObject
{
get
{
return (Image)GetValue(TrueObjectProperty);
}
set
{
SetValue(TrueObjectProperty, value);
}
}
public static readonly DependencyProperty TrueObjectProperty =
DependencyProperty.Register(
"TrueObject",
typeof(Image),
typeof(BooleanToObjectConverter<Image>),
new PropertyMetadata(null));
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
return (bool)value ? this.TrueObject : this.FalseObject;
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
return ((Image)value).Equals(this.TrueObject);
}
}
侧面说明:在这里使用泛型没有多大意义,因此我将其删除。
如果最初的意图是使用实际的泛型类型,请参见:Generic Type in Xaml Resources,因为为资源字典中的条目指定泛型类型参数不是很简单。