【发布时间】:2011-07-29 05:18:30
【问题描述】:
我有一个 WFP 项目,我正在使用 MVVM 模式。 我有在 CustomerView UserControl 中使用的 AddressView 用户控件。
<my:AddressVeiw Width="340" DataContext="AddressViewModel"/>
我的 AddressVeiw userControl 有一个 AddressViewModel 并且 CustomerView 有一个 CustomerViewModel
CustomerViewModel 代码
public DelegateCommand<object> SaveCommand { get; set; } private string firstName; public string FirstName { get { return firstName; } set { firstName = value; RaisePropertyChanged("FirstName"); SaveCommand.RaiseCanExecuteChanged(); } } private string lastName; public string LastName { get { return lastName; } set { lastName = value; RaisePropertyChanged("LastName"); SaveCommand.RaiseCanExecuteChanged(); } } private AddressViewModel addressViewModel; public AddressViewModel AddressViewModel { get { return addressViewModel; } set { addressViewModel = value; } } private string middleName; public string Middlename { get { return middleName; } set { middleName = value; RaisePropertyChanged("MiddleName"); SaveCommand.RaiseCanExecuteChanged(); } } private string fullName; public string FullName { get { return fullName; } set { fullName = value; RaisePropertyChanged("FullName"); } } private void InitializeCommands() { SaveCommand = new DelegateCommand<object>(OnSaveCommand, CanSaveExcute); } private bool CanSaveExcute(object obj) { if (string.IsNullOrEmpty(firstName) ||string.IsNullOrEmpty(lastName)) return false; return true; } private void OnSaveCommand(object obj) { FullName = FirstName + " " + LastName; } }
AddressViewModel 代码
private ObservableCollection<Country> countryList = new ObservableCollection<Country>(); public ObservableCollection<Country> CountryList { get { return countryList; } set { countryList = value; } } public DelegateCommand<object> SaveCommand { get; set; } private void Load() { try { CountryList = (new CountryRepository().GetAll()); } catch (Exception ex) { OnSetStatusBarText("Error: " + ex.Message.ToString()); } } private void OnSetStatusBarText(string message) { var evt = eventAgg.GetEvent<StatusBarMessageEvent>(); evt.Publish(message); } private void InitializeCommands() { SaveCommand = new DelegateCommand<object>(OnSaveCommand, CanSaveExcute); } private bool CanSaveExcute(object obj) { return true; } private void OnSaveCommand(object obj) { }
我如何将 AdddressViewModel 连接到我的 AddressView,客户工作正常... 必须做些什么来解决这个问题? 谢谢
【问题讨论】:
标签: wpf mvvm user-controls nested viewmodel