They are public. Here there are. Project, Command, and Message view model will look exactly like the QueueViewModel.
public class QueueViewModel : ViewModelBase { private Queue _queue; public QueueViewModel(Queue queueObject) { Queue = queueObject; }
public Queue Queue
{
get { return _queue; }
set
{
SetProperty(ref _queue, value);
OnPropertyChanged();
}
}
}
public class MessageQueueViewModel : ViewModelBase { public static MessageQueueViewModel MessageQueue = new MessageQueueViewModel();
public MessageQueueViewModel()
{
var helpMenu = LoadHelpMenu();
Queues = new ObservableCollection<QueueViewModel>();
Projects = new ObservableCollection<ProjectViewModel>();
Commands = new ObservableCollection<CommandViewModel>();
Messages = new ObservableCollection<MessageViewModel>();
var queues = helpMenu.Queues.Select(queue => new QueueViewModel(queue));
foreach (var queue in queues)
Queues.Add(queue);
var projects = helpMenu.Projects.Select(project => new ProjectViewModel(project));
foreach (var project in projects)
Projects.Add(project);
}
public ObservableCollection<QueueViewModel> Queues { get; set; }
public ObservableCollection<ProjectViewModel> Projects { get; set; }
public ObservableCollection<CommandViewModel> Commands { get; set; }
public ObservableCollection<MessageViewModel> Messages { get; set; }
private HelpMenu LoadHelpMenu()
{
HelpMenu returningObject;
var deserializer = new XmlSerializer(typeof(HelpMenu));
using (var reader = new StreamReader(ConfigurationManager.AppSettings["XMLLocation"]))
{
object tempObject = deserializer.Deserialize(reader);
returningObject = tempObject as HelpMenu;
}
return returningObject;
}
}