Il nostro controllo per la visualizazione di grafici 3D, dovra essere inserito dentro il ViewPort3D, quindi dovrà ereditare ModelVisual3D
[code language="c#"]
/// Autore: Paolo Possanzini
/// WebSite: http://www.teamdev.it
/// email: paolo@teamdev.it
public class WpfChart : ModelVisual3D, ISupportInitialize
{
....
}
[/code]
Da notare che il nostro controllo implementerà anche ISupportInitialize, questo ci permette di capire quando stato inizializzato oppure quando è in fase di inizializzazione.
A questo punto possiamo iniziare ad inserire all'interno del nostro controllo. I grafici saranno visualizzati a partire da una sorgente dati, quindi mettiamo a disposizione dello sviluppatore una proprietà per agganciare la sorgente dati al nostro controllo.
[code language="c#"]
/// Autore: Paolo Possanzini
/// WebSite: http://www.teamdev.it
/// email: paolo@teamdev.it
public class WpfChart : ModelVisual3D, ISupportInitialize
{
private static DependencyProperty ItemsSourceProperty = DependencyProperty.Register("ItemsSource", typeof(IEnumerable), typeof(WpfChart));
private static DependencyProperty ItemTemplateProperty = DependencyProperty.Register("ItemTemplate", typeof(DataTemplate), typeof(WpfChart));
public IEnumerable ItemsSource
{
get { return base.GetValue(ItemsSourceProperty) as IEnumerable; }
set
{
if (value == null)
base.ClearValue(ItemsSourceProperty);
else
base.SetValue(ItemsSourceProperty, value);
RefreshBars();
}
}
....
}
[/code]
Ci servono anche altre proprietà che implementeremo in modo analogo, le proprietà che ci servono sono : ItemTemplate, Transform, ItemTemplateName.
ItemTemplate ed ItemTemplateName ci servono per implementare una struttura simile agli ItemTemplate presenti nelle ListView.
A questo punto siamo pronti per iniziare a preoccuparci di cosa visualizzare all'interno del nostro controllo.