|
#region using
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Windows;
using System.Windows.Controls;
using HomeGrownMVVM.Helpers;
using HomeGrownMVVM.Model;
using VvmScaffolding;
#endregion using
namespace HomeGrownMVVM.ViewModel
{
public class ClassicComposerTreeViewModel : BaseViewModel
{
#region ObservableCollection<MyTreeNode> DataToPresent
private ObservableCollection<MyTreeNode> dataToPresent = null;
public ObservableCollection<MyTreeNode> DataToPresent
{
get
{
return dataToPresent;
}
set
{
dataToPresent = value;
OnPropertyChanged("DataToPresent");
}
}
#endregion ObservableCollection<MyTreeNode> DataToPresent
#region LoadData
public override void LoadData()
{
base.LoadData();
if (DataToPresent != null)
{
DataToPresent.Clear();
}
var fullList = DataProvider.FakeSortedClassicData();
DataToPresent = ProcessData(fullList);
}
#endregion LoadData
#region ProcessData
private ObservableCollection<MyTreeNode> ProcessData(List<CompleteClassicData> fullList)
{
var shortList = new ObservableCollection<PresntingClassicData>();
foreach (var completeData in fullList)
{
var pd = new PresntingClassicData
{
Composer = completeData.ComposerName,
Composition = completeData.CompositionName,
Conductor = completeData.Conductor,
Orquestra = completeData.Orquestra,
Id = completeData.Id,
Details = completeData
};
shortList.Add(pd);
}
var sortHelper = new TreeNodeListGenerator<PresntingClassicData>(GetComoserName, GetCompositionName)
{
FirstLevelGroupName = "Composers",
FirstLevelImagePath = @"../../Images/violin.png",
SecondLevelGroupName = "Compositions",
SecondLevelImagePath = @"../../Images/composer.png",
ThirdLevelImagePath = @"../../Images/MusicalNote.png"
};
var treeList = sortHelper.CreateSingleLetterNodes(shortList);
InfoText = string.Format("Found {0} main nodes at {1}", treeList.Count, DateTime.Now.ToShortTimeString());
return treeList;
}
#endregion ProcessData
#region delegates for the tree nodes generator
public virtual string GetComoserName(PresntingClassicData item)
{
return item.Composer;
}
public virtual string GetCompositionName(PresntingClassicData item)
{
return item.Composition;
}
#endregion delegates for the tree nodes generator
#region LoadedAction
protected override void LoadedAction(object param)
{
var pw = param as ParameterWrapper;
if (pw != null)
{
var tv = pw.Sender as TreeView;
if (tv != null)
{
var tvi = tv.ItemContainerGenerator.ContainerFromItem(tv.Items[0]) as TreeViewItem;
if (tvi != null)
{
tvi.IsExpanded = true;
}
}
}
}
#endregion LoadedAction
}
}
|
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.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.