TwoWay将DateTime绑定到TextBox - 仅限年份

时间:2014-10-16 17:09:15

标签: c# wpf datetime binding

如何将(TwoWay)DateTime绑定到TextBox,以便只显示DateTime的Year,TextBox也接受输入作为Year(即用户可以键入“2014”,这将成功绑定到日期时间)?

我有以下内容:

TextBox Margin="10, 1" MinWidth="100" Text="{Binding LastGoodDate, StringFormat={}{0:yyyy}}" >

以yyyy格式成功显示DateTime,但是当用户键入“2014”时绑定失败。

我可以通过绑定到中间字符串属性来解决这个问题,然后手动解析结果并将其存储在DateTime中,但我想尽可能避免这种情况。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

在视图模型中通过添加单独的"年"这可能是最容易的。属性。例如:

TextBox Text="{Binding LastGoodYear}" >

该属性不应有自己的支持字段,但应根据需要修改日期:

public int LastGoodYear
{
    get 
    {
        return LastGoodDate.Year; 
    }
    set
    {
        LastGoodDate = new DateTime(value, LastGoodDate.Month, LastGoodDate.Day);
    }
}

还要确保触发" PropertyChanged" (LastGoodYear)在" LastGoodDate"设定器。