|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.ObjectModel;
using System.Windows.Input;
using System.ComponentModel;
using WorldDataLib.Model;
namespace TestTreeViewWithRightBarView.ViewModel
{
public class CountryViewModel : ITreeViewWithChildrenNode, ICountryViewModel, ISelectionSectionPresenter, INotifyPropertyChanged
{
#region Members
IViewModel m_Parent;
Country m_Country;
ObservableCollection<ITreeViewNode> m_Children;
#endregion
#region Properties
#region ITreeViewWithChildrenNode Members
public ObservableCollection<ITreeViewNode> Children
{
get
{
return m_Children;
}
}
#endregion
#region ITreeViewNode Members
public string Caption
{
get
{
string str = string.Empty;
if (m_Country != null)
{
str = m_Country.Name;
}
return str;
}
}
#endregion
#region IViewModel Members
public IViewModel VMParent
{
get
{
return m_Parent;
}
}
#endregion
#region ISelectionSectionPresenter Members
public string Title
{
get;
set;
}
#endregion
public CurrenciesEnum Currency
{
get;
set;
}
#endregion
#region Methods
#region Ctor
public CountryViewModel(IViewModel parent, Country country)
{
m_Parent = parent;
m_Country = country;
m_Children = new ObservableCollection<ITreeViewNode>();
if ((m_Country != null) && (m_Country.Cities != null))
{
for(int iter = 0; iter < m_Country.Cities.Count; iter++)
{
m_Children.Add(new CityViewModel(this, m_Country.Cities[iter]));
}
}
}
#endregion
#region IViewModel Members
public void HandleEvent(IViewModel sender, object param, ViewModelOperationsEnum viewModelEvent)
{
if (m_Parent != null)
{
m_Parent.HandleEvent(sender, param, viewModelEvent);
}
}
#endregion
#region GotFocus
public ICommand GotFocus
{
get
{
return new DelegateCommand(this.ControlGotFocus);
}
}
/// <summary>
/// When the control gets focus, an event is fired for external handling
/// </summary>
public void ControlGotFocus()
{
if (VMParent != null)
{
VMParent.HandleEvent(this, null, ViewModelOperationsEnum.GotFocus);
VMParent.HandleEvent(this, Caption, ViewModelOperationsEnum.GetCountryCurrency);
}
}
#endregion
#region ICountryViewModel Members
public void SetCurrency(CurrenciesEnum currency)
{
Currency = currency;
Title = string.Format("{0} currency is {1}",Caption, Currency);
OnPropertyChanged("Title");
}
#endregion
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string str)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(str));
}
}
#endregion
#endregion
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.