如何将(TwoWay)DateTime绑定到TextBox,以便只显示DateTime的Year,TextBox也接受输入作为Year(即用户可以键入“2014”,这将成功绑定到日期时间)?
我有以下内容:
TextBox Margin="10, 1" MinWidth="100" Text="{Binding LastGoodDate, StringFormat={}{0:yyyy}}" >
以yyyy格式成功显示DateTime,但是当用户键入“2014”时绑定失败。
我可以通过绑定到中间字符串属性来解决这个问题,然后手动解析结果并将其存储在DateTime中,但我想尽可能避免这种情况。
有什么想法吗?
答案 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"设定器。