MVVM在WPF里很早就有了,在Winform里Devexpress最近几个大版本才有的事,上一段代码。
现在对话框上添加三个控件simpleButton1,simpleButton2,textEdit1,MvvmContext组件
public partial class Form1 : DevExpress.XtraEditors.XtraForm { // // POCO View Model provides out-of-the-box support of the INotifyPropertyChanged. // public class ViewModel { // Bindable property will be created from this property. public virtual string Title { get; set; } // Just a method for readability public string GetTitleAsHumanReadableString() { if (Title == null) return "(Null)"; if (Title.Length == 0) return "(Empty)"; if (string.IsNullOrWhiteSpace(Title)) return "(WhiteSpace)"; return Title; } } public Form1() { InitializeComponent(); } private void simpleButton1_Click(object sender, EventArgs e) { // Set type of POCO-ViewModel mvvmContext1.ViewModelType = typeof(ViewModel); // Data binding for the Title property (via MVVMContext API) mvvmContext1.SetBinding(textEdit1, c=>c.EditValue, "Title"); // UI binding for the Report command ViewModel viewModel = mvvmContext1.GetViewModel<ViewModel>(); simpleButton2.Click += (s, ee) => XtraMessageBox.Show(viewModel.GetTitleAsHumanReadableString()); }
当simpleButton1点击执行后,simpleButton2点击后显示的就是textEdit1的值。