繁体   English   中英

C#中的数据绑定自定义XML可序列化的Color类

[英]Databinding custom XML serializable Color class in C#

我有一个可序列化的颜色类,允许我对颜色进行XML序列化。

public class SerializableColor
{

    // omitted constructors, etc. ...

    [XmlIgnore]
    public Color Color
    {
        get { return Color.FromArgb(this.Alpha, this.Red, this.Green, this.Blue); }
        set
        {
            this.Alpha = value.A;
            this.Red = value.R;
            this.Green = value.G;
            this.Blue = value.B;
        }
    }

    public int Alpha { get; set; }
    public int Red { get; set; }
    public int Green { get; set; }
    public int Blue { get; set; }
}

现在,例如,考虑一个Foo类:

public class Foo 
{
    public SerializableColor SColor { get; set; }
}

我想将某些WinForm Control属性绑定到此类。 当我第一次添加数据绑定时,一切工作正常,但是任何更改均未正确传播。

例如,如果我将控件的BackColor绑定到SColor,则BackColor将被正确更新,等等。但是,如果我随后更改BackColor,则更改不会传播到Foo对象的SColor。 而且,如果我更改Foo对象的SColor,则该更改将不会在控件的BackColor上看到。

数据绑定到纯色属性可以按需工作。 只是不使用SerializableColor。

我要去哪里错了?

您需要使您的SerializableColor类实现INotifyPropertyChanged

如果将SColor完全更改为新的颜色实例,还应该使Foo实现它。

另外,如果您希望Windows窗体能够双向地与SerializedColor类型进行转换,则应该真正实现TypeConverter

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM