在 XAML ResourceDictionary 中,如何创建对嵌套类 IValueConverter 的引用?
给定一个实现 ivalueconverter
的类:
public class MyConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return ...;
}
// Never called.
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return ...;
}
}
创建一个不是嵌套类的键入的keyed resourcectionary条目,如果是
<ContentView
...
xmlns:converters="clr-namespace:MyNamespace.Converters"
x:Class "MyNamespace.MyView">
<ContentView.Resources>
<ResourceDictionary>
<converters:MyConverter x:Key="myConverter" />
...
nested class /em>:
public class OuterClass
{
public class MyConverter : IValueConverter
...
嵌套类不能称为元素名称(无效xml也不是XAML):
// Won't compile.
<ContentView.Resources>
<ResourceDictionary>
<converters:OuterClass.MyConverter x:Key="myConverter" />
...
或者
<converters:OuterClass+MyConverter x:Key="myConverter" />
...
,如果有将类名称移至属性值的等效XAML,则可以是完成,如我的答案在这里:
<??? SomeProperty="converters:OuterClass+MyConverter" x:Key="myConverter" />
或者也许其中一个,per x:键入标记扩展:
<x:Type TypeName="converters:OuterClass+MyConverter" x:Key="myConverter" />
<x:Type TypeName="converters:OuterClass.MyConverter" x:Key="myConverter" />
<??? SomeProperty="{x:Type converters:OuterClass+MyConverter}" x:Key="myConverter" />
我已经尝试过所有这些,加上其他所有这些变体(例如替换 ???
用 ivalueconverter
或 object
)。
到目前为止,我总是会遇到构建时间问题:
Type '...' is not usable as an object element because it is not public or does not define a public parameterless constructor or a type converter.
或者在打开视图时运行时:
System.RuntimeType doesn't implement interface Xamarin.Forms.IValueConverter
... SIGABRT
q:有没有办法指定 ivalueconverter
资源,当类型是嵌套类别时?
注意:
- 我已经验证了该类是不是嵌套的。 [那是我现在正在使用的解决方案。但是我希望将类嵌套在类背后的代码中,因为这是此视图上使用的 。]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论