当存在隐式转换时,为什么在DataGrid中不自动转换类?
本文关键字:转换 DataGrid 为什么 存在 | 更新日期: 2023-09-27 18:09:47
我有一个类MyClass
,具有一个属性:MyPropertyClass
类型的MyProperty
。MyPropertyClass
由string
转化为implicit operator
。
现在我想在双向中从DataGridTextColumn
绑定到该属性,但它不起作用。在我看来,它应该自动从string
转换到MyPropertyClass
,也可以转换回来(使用ToString
方法)。
System.Windows。数据错误:1:无法创建默认的转换器到在类型之间执行"双向"转换。MyPropertyClass"和system . string’"。考虑使用绑定的Converter属性。BindingExpression:路径= MyProperty;DataItem = ' MyClass '(HashCode = 22558296);目标元素是'TextBox' (Name= ");目标属性为"Text"(类型为"String")
我知道我可以像上面的错误描述那样定义一个Converter
。但是这样做是多余的,因为我只会使用implicit conversion
从string
到MyPropertyClass
和ToString
方法。
class MyClass
{
public MyPropertyClass MyProperty { get; set; }
}
class MyPropertyClass
{
private string value;
public override string ToString()
{
return value;
}
public static implicit operator MyPropertyClass(string s)
{
MyPropertyClass mc = new MyPropertyClass();
mc.value = s;
return mc;
}
}
XAML: <DataGrid ItemsSource="{Binding List,Mode=OneWay}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="My Property" Binding="{Binding MyProperty,Mode=TwoWay}" />
</DataGrid.Columns>
</DataGrid>
您正在寻找一个TypeConverter。
- CodeProject上
- Wpf2000things