【问题标题】:Why isn't a class converted automatically in DataGrid when implicit conversion exists?存在隐式转换时,为什么在 DataGrid 中没有自动转换类?
【发布时间】:2016-09-30 01:45:29
【问题描述】:

我有一个类MyClass 有一个属性:MyProperty 类型为MyPropertyClassMyPropertyClassimplicit operator 用于从 string 转换。

现在我想以双向的方式从DataGridTextColumn 绑定到该属性,但它不起作用。在我看来,它应该自动从string 转换为MyPropertyClass 并返回(使用ToString 方法)。

错误:

System.Windows.Data 错误:1:无法创建默认转换器 在类型“Test.MyPropertyClass”和 '系统.字符串'。考虑使用 Binding 的 Converter 属性。 绑定表达式:路径=我的属性;数据项='我的班级' (哈希码=22558296);目标元素是'TextBox'(名称='');目标 属性是“文本”(类型“字符串”)

我知道我可以定义一个Converter,就像上面的错误描述一样。但这样做是多余的,因为无论如何我只会使用从stringMyPropertyClassimplicit conversionToString 方法。

代码:

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


    【解决方案1】:

    【讨论】:

    • 感谢您指出这一点,但我仍然认为编写这些转换器是多余的。我的意思是:无论如何我都会使用implicit conversionToString 方法。为什么它不能自己自动完成?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多