假设我有一个viewmodel,它公开了P
类型的双向可绑定属性object
。但是假设我确实期望一个具体的类型,但我不知道在运行之前会是什么。有什么方法可以通知WPF,例如通过第二个属性,P
的预期类型,因此当P
由于某些UI操作(TextBox
输入)而设置时,框架可以执行自己的内置类型转换?我更喜欢在VM端而不是在XAML中执行此操作,因此VM使用者不需要知道任何异常情况正在发生。
以下是一个示例,说明了这种情况可能发生的方式:
class ViewModel : ViewModelBase
{
private readonly object _obj;
private readonly PropertyInfo _prop;
public ViewModel(object obj, PropertyInfo prop)
{
_obj = obj;
_prop = prop;
}
public object P
{
get { /* return value of _prop on _obj */ }
set { /* set _prop on _obj to value,
but I have to convert from string manually */ }
}
public Type ExpectedType => _prop.PropertyType;
}
是否(例如)我可以在ExpectedType
上设置任何类型的属性,或者我可以使用的魔术名称,这将告诉WPF它返回我期望的{{1}类型}?