2016-09-30 66 views
0

我有一個類MyClass與一個屬性:MyProperty類型MyPropertyClassMyPropertyClassimplicit operatorstring轉換。當存在隱式轉換時,爲什麼不在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像上面狀態的錯誤描述。但是這樣做是多餘的,因爲我只會使用從stringMyPropertyClassToString方法的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> 

回答

相關問題