允许复杂类的字符串编辑

时间:2014-01-20 13:15:29

标签: c# wpf

我创建了一个类来表示一个只有一小时和几分钟的时间Time。我重载了该类的ToString()方法。我在DataGrid中显示带有Time属性的类,使用DataGridTextColumn来显示Time。只是看着作品篦,但我无法编辑它。我在时间类中添加了一个构造函数,它接受一个字符串,没有帮助。为了实现这一目标,我需要实施什么?

课程时间:

public class Time
{

    public Time() { }

    /// <summary>
    /// the hour
    /// </summary>
    public int Hour
    {
        get;
        set;
    }

    /// <summary>
    /// the minuets
    /// </summary>
    public int Minutes
    {
        get;
        set;
    }

    /// <summary>
    /// the time in format hh:mm
    /// </summary>
    public string time
    {
        get { return String.Format("{0:00}:{1:00}", Hour, Minutes); }
        set 
        { 
            string[] spl = value.Split(':');
            Hour = Int32.Parse(spl[0]);
            Minutes = Int32.Parse(spl[1]);
        }
    }
    public override string ToString()
    {
        return time;
    }
}

还有比较运算符,但我省略了它们。 (我认为它们不重要)。

1 个答案:

答案 0 :(得分:0)

我看起来您需要使用CellStyle格式而不是覆盖ToString()。但是,如果你仍想重新发明轮子,请在Value中添加属性Time并绑定到它:

public class Time
{

    public Time() { }

    /// <summary>
    /// the hour
    /// </summary>
    public int Hour
    {
        get;
        set;
    }

    /// <summary>
    /// the minuets
    /// </summary>
    public int Minutes
    {
        get;
        set;
    }

    /// <summary>
    /// the time in format hh:mm
    /// </summary>
    public string Value
    {
        get { return String.Format("{0:00}:{1:00}", Hour, Minutes); }
        set 
        { 
            string[] spl = value.Split(':');
            Hour = Int32.Parse(spl[0]);
            Minutes = Int32.Parse(spl[1]);
        }
    }
}

并且绑定:

Text={Binding YourTimeProperty.Value, Mode=TwoWay}
相关问题