【发布时间】:2016-09-30 01:45:29
【问题描述】:
我有一个类MyClass 有一个属性:MyProperty 类型为MyPropertyClass。 MyPropertyClass 有 implicit operator 用于从 string 转换。
现在我想以双向的方式从DataGridTextColumn 绑定到该属性,但它不起作用。在我看来,它应该自动从string 转换为MyPropertyClass 并返回(使用ToString 方法)。
错误:
System.Windows.Data 错误:1:无法创建默认转换器 在类型“Test.MyPropertyClass”和 '系统.字符串'。考虑使用 Binding 的 Converter 属性。 绑定表达式:路径=我的属性;数据项='我的班级' (哈希码=22558296);目标元素是'TextBox'(名称='');目标 属性是“文本”(类型“字符串”)
我知道我可以定义一个Converter,就像上面的错误描述一样。但这样做是多余的,因为无论如何我只会使用从string 到MyPropertyClass 的implicit conversion 和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>
【问题讨论】:
标签: c# wpf binding datagrid implicit-conversion