【发布时间】:2016-04-18 04:08:45
【问题描述】:
我花了相当多的时间尝试了多种不同的方法来解决我遇到的问题,但无济于事,所以我希望这里有人能提供帮助。
我有一个具有双向绑定的文本框元素,它利用类型转换器将值从字符串转换为自定义数据类型,例如MyCustomType。这工作正常,但是由于我的项目要求发生了变化,我现在需要在转换发生之前执行额外的处理。
但是,为了执行这个额外的处理,我需要能够访问“源”文本框或绑定上下文。这两个我都无法访问。
有没有办法通过类型转换器的ConvertFrom() 方法访问源文本框?
我尝试使用(通过 WPF)传递给 ConvertFrom() 方法的 ITypeDescriptorContext 参数,但是其中的大多数属性都是空的。
即
public class MyCustomTypeConverter : TypeConverter
{
...
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
// Context is
return new MyCustomType(value);
}
...
}
我也尝试过使用MultiValueConverter,并完全避免使用类型转换器,但这会导致很多额外代码,并没有真正帮助。我宁愿避免走这条路,因为类型转换器要优雅得多。
任何建议/帮助将不胜感激! :)
【问题讨论】:
-
为什么要访问绑定?可能还有其他方法
-
我认为不可能从 TypeConverters 访问绑定。他们必须在DataLayer上操作,似乎也有很多不必要的工作。如果您更新问题,人们可能会很容易地以这种方式为您提供帮助。
-
@Nitin,我试图访问源文本框,以便可以将其传递给另一个方法(作为参考),以便在验证失败时执行特定任务。这不一定是最好的方法,但是项目的需求在开发阶段已经发生了相当大的变化,这是一个功能性的、有点临时的解决方案。 (当我有时间时,它在我要重构的事情清单上相当高)。谢谢你们的回复。
标签: c# wpf typeconverter