我有一個類MyClass
與一個屬性:MyProperty
類型MyPropertyClass
。 MyPropertyClass
有implicit operator
從string
轉換。當存在隱式轉換時,爲什麼不在DataGrid中自動轉換類?
現在我想從DataGridTextColumn
的雙向綁定到該屬性,但它不起作用。在我看來,它應該自動從string
轉換爲MyPropertyClass
,並且還會返回(使用ToString
方法)。
錯誤:
System.Windows.Data Error: 1 : Cannot create default converter to perform 'two-way' conversions between types 'Test.MyPropertyClass' and 'System.String'. Consider using Converter property of Binding. BindingExpression:Path=MyProperty; DataItem='MyClass' (HashCode=22558296); target element is 'TextBox' (Name=''); target property is 'Text' (type 'String')
我知道我可以定義一個Converter
像上面狀態的錯誤描述。但是這樣做是多餘的,因爲我只會使用從string
到MyPropertyClass
和ToString
方法的implicit conversion
。
代碼:
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>
感謝您指出了這一點,但我仍然認爲,寫這些轉換器是多餘的。我的意思是:無論如何,我將使用'隱式轉換'和'ToString'方法。爲什麼它不能自動完成? – GregaMohorko