使用MVVM更改父容器的可见性更改上的TextBox.Text

时间:2011-06-18 08:09:00

标签: wpf mvvm textbox visibility

我正在使用WPF和MVVM构建LOB应用程序。当用户需要插入客户端详细信息时,他可以从多个窗口(通过绑定设置可见性属性的用户控件)中这样做,因此他一次只能看到一个窗口。

问题是所有TextBox控件都将文本值保持在可见性更改之间(折叠< - > visible),我想重置它们。 在文本框样式中创建触发器不起作用(但没有错误或任何内容)。

我应该怎样做以保持与MVVM模式的关系?

我正在考虑使用ObjectDataProvider来调用使用反射的方法并设置每个TextBox.Text值。这个objectdataprovider将在StackPanel(容器)样式中设置触发器。

1 个答案:

答案 0 :(得分:0)

如果我正确理解你,那么你想要实现的就是一个巫师。当用户单击“下一步”时,将隐藏当前用户控件并显示下一个用户控件。

由于您正在进行MVVM,我希望每个TextBox.Text绑定到视图模型上的属性。如果是这样,那么您不需要使用触发器。您应该做的就是在将用户控件的可见性设置为Visible之前将每个属性设置为空字符串。

例如,如果用户单击“下一步”,并且要显示的下一个屏幕为Screen3,则应设置Screen3ViewModel上用于填充文本字段的所有属性(例如<{1}},NameAddress)清空字符串。

您的文本框应如下所示:

Occupation

换句话说,通过代码完成所有事情,而不是标记。

请注意,您需要确保视图模型实现<TextBox Text={Binding Name} /> <TextBox Text={Binding Address} /> <TextBox Text={Binding Occupation} /> ,以便绑定引擎知道在更改视图模型中的属性时更新文本字段。