我有一个PersonViewModel
,其中包含DateTime DateOfBirth
属性。我想为this layout后面的内容创建一个视图/模板:
问题是,我无法想象如何进行绑定/验证:
我应该使用DateTimeViewModel,它将单个DateTime映射到三个不同的可绑定属性(Day,Month,Year)?如果是的话,它的生命周期应该是什么?我的意思是,我有Person.DateOfBirth
属性,那么我能绑定什么?当一个属性发生变化时,我将如何执行验证,以及如何从中更新Person.DateOfBirth?
我应该使用MultiValueConverter吗?如果是,我该如何申报?我习惯将VM中的许多属性MultiBinding到VW中的单个属性,但现在我需要将ViewModel中的单个属性映射到View中的许多属性。
BindingGroup怎么样?这是一个很好的用例吗?
答案 0 :(得分:0)
您可以将DateOfBirth的不同属性绑定到多个TextBox,即
<TextBox x:key ="1" Text = "{Binding DateOfBirth.Day}" StringFormat=""../>
<TextBox x:key ="2" Text = "{Binding DateOfBirth.Month}" StringFormat=""../>
<TextBox x:key ="3" Text = "{Binding DateOfBirth.Year}" StringFormat=""../>
您可以为这些文本框单独指定验证规则,如IsValidDayRule,IsValidMonthRule等。此外,如果您不想使用ValidationRules,则可以在viewmodel中进行验证。我认为这是一种更清洁的方法。
您还可以在评论中为Will创建一个usercontrol。这也是一种更好的方法。