我有一个页面,里面有几个文本框。这些控件绑定到模型。我正在使用MVVM。
假设我有三个文本框FirstName
,LastName
和Company
。所以在模型中,我有三个属性要绑定。现在我需要跟踪每个字段发生的变化。如果FirstName
从原始值更改,我需要使用不同的背景颜色对文本框进行着色。
目前,我正在创建另一个名为FirstNameChanged
的属性,并将背景绑定到此属性。我将在更改FirstName
时更新此信息。对于3个字段,这似乎没问题。但是当我有更多的字段时,属性的数量会太多。
有没有更好的方法来解决这个问题?
答案 0 :(得分:0)
通过跟踪更改,您的意思并不十分清楚。如果你只想在编辑字段时文本框应该改变颜色,那么我就是这样解决的。
由于这是视图特定功能,因此代码应位于视图的代码隐藏中,不应位于视图模型中。
所以我会做以下事情:
为文本框中的文本更改创建事件处理程序:
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
TextBox textbox = sender as TextBox;
textbox.Background = new SolidColorBrush(Colors.Green);
}
然后将所有文本框的TextChanged
事件绑定到此事件处理程序。