问题描述
似乎有很多信息,但是我找不到确切的信息。 或者我不在那...
我试图了解Binding如何在不使用转换器的情况下转换不同类型的值。 我发现的唯一通用解决方案是通过中间转换为字符串。
比方说,有一个DependencyProperty
类型为double。
我们可以将其绑定到Int32
类型的属性,这样的绑定才能正常工作。
如何在不引发异常的情况下在代码中执行相同操作? 绑定还会使用中间转换为字符串吗?
演示代码:
int i = 10;
bool x = i is double; // false
bool y = TypeDescriptor.GetConverter(typeof(double)).IsValid(i); // false
bool z = TypeDescriptor.GetConverter(typeof(double)).IsValid(i.ToString()); // true
该方法的当前实现,但我真的不喜欢它:
public static TResult Convert<TResult>(object value)
{
string str = value.ToString();
if (TypeDescriptor.GetConverter(typeof(TResult)).IsValid(str))
return (TResult) TypeDescriptor.GetConverter(typeof(TResult)).ConvertFrom(str);
return default;
}
还有一种变体来创建隐藏的DependencyProperty
并将其用于转换。
但是仅仅为了转换机制而从DependecyObject
继承对我来说似乎是个坏主意。
我将再次澄清,我知道转换值的不同方法,包括从问题flagged as duplicate开始,但是我的解决方案仅针对WPF。
因此,我对任何一种方法都不感兴趣,即DependencyProperty
绑定使用的方法。
在源代码中,我找不到绑定期间在何处以及如何转换值。
因此,我要求澄清这种机制或提供使用绑定的源代码的链接。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)