如何从 ViewModel 一次清除 WPF 中的所有控件?
Posted
技术标签:
【中文标题】如何从 ViewModel 一次清除 WPF 中的所有控件?【英文标题】:How to clear all the controls at one time in WPF from ViewModel? 【发布时间】:2022-01-20 21:13:10 【问题描述】:如果有任何方法可以一次清除 WPF 中的所有控件,请指导我。
问题:我有一个包含 textboxes、Datagrids 等的窗口。所以在我的工作完成后,我需要清除所有控件.试想一下,完成后的注册表单我需要一份新副本以进行下一次注册。 那么如何从 ViewModel 中做到这一点..?
现在我正在一个一个方法中清除一个控件。 但我想知道是否有任何有效的方法来做到这一点。
【问题讨论】:
将它们全部绑定到一个视图模型的属性。新建另一个实例并将 datacontext 设置为该实例。 好的,但是如何销毁旧实例。让垃圾收集器处理什么 从太空中核弹它。这是唯一确定的方法。或者。如果您没有硬引用来保持 gc 一直存在,您可以只依靠 gc。 好的,让我试试..谢谢你的建议。 【参考方案1】:如果您将ICommand
与Binding
一起使用,您可以将所有属性设置为默认值:
ViewModel
:
public string Text get => _text; set => SetProperty(_ref _text, value); //binding to control in UI
public int SmthIntProperty get => _smthInt; set => SetProperty(_ref _smthInt, value); //binding to control in UI
public Command ExampleCommand
get => new Command((_) =>
//smth code
Text = string.Empty;
SmthIntProperty = 0;
)
【讨论】:
以上是关于如何从 ViewModel 一次清除 WPF 中的所有控件?的主要内容,如果未能解决你的问题,请参考以下文章
WPF 中的 MVVM - 如何提醒 ViewModel 模型中的变化......或者我应该吗?
Caliburn.Micro-如何从继承的ViewModel在WPF视图中显示多个项目:Conductor 。Collection.AllActive
从 ViewModel WPF 更新 XAML 中的 ComboBox ObservableCollection 绑定