我正在使用WPF和MVVM构建LOB应用程序。当用户需要插入客户端详细信息时,他可以从多个窗口(通过绑定设置可见性属性的用户控件)中这样做,因此他一次只能看到一个窗口。
问题是所有TextBox控件都将文本值保持在可见性更改之间(折叠< - > visible),我想重置它们。 在文本框样式中创建触发器不起作用(但没有错误或任何内容)。
我应该怎样做以保持与MVVM模式的关系?
我正在考虑使用ObjectDataProvider来调用使用反射的方法并设置每个TextBox.Text值。这个objectdataprovider将在StackPanel(容器)样式中设置触发器。
答案 0 :(得分:0)
如果我正确理解你,那么你想要实现的就是一个巫师。当用户单击“下一步”时,将隐藏当前用户控件并显示下一个用户控件。
由于您正在进行MVVM,我希望每个TextBox.Text
绑定到视图模型上的属性。如果是这样,那么您不需要使用触发器。您应该做的就是在将用户控件的可见性设置为Visible
之前将每个属性设置为空字符串。
例如,如果用户单击“下一步”,并且要显示的下一个屏幕为Screen3
,则应设置Screen3ViewModel
上用于填充文本字段的所有属性(例如<{1}},Name
,Address
)清空字符串。
您的文本框应如下所示:
Occupation
换句话说,通过代码完成所有事情,而不是标记。
请注意,您需要确保视图模型实现<TextBox Text={Binding Name} />
<TextBox Text={Binding Address} />
<TextBox Text={Binding Occupation} />
,以便绑定引擎知道在更改视图模型中的属性时更新文本字段。