/// <summary> /// Initialize offset for this page /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void PianoKeys_OnLoaded(object sender, RoutedEventArgs e) { _pianoRollContext = this.DataContext as PianoRollContext; foreach (var item in from object item in PianoKeys.ItemsSource let key = item as KeyContext where key.Value == PianoRollContext.TopKey select item) { PianoKeys.ScrollTo(item); _cellWidth = (_items[item].ActualWidth * 4) / (5 * 16); } }
/// <summary> /// Query database and load the information for sample /// </summary> /// <param name="sampleId">ID of loading sample</param> public override void LoadData(int sampleId) { this._currentSample = this.DataBaseContext.Samples.FirstOrDefault(x => x.Id == sampleId); Tacts = new ObservableCollection <PianoRollContext>(); if (_currentSample == null) { return; } for (var i = _currentSample.InitialTact; i < _currentSample.InitialTact + _currentSample.Size; i++) { var tact = new PianoRollContext(i); tact.AddedNote += OnAddedNote; tact.DeletedNote += OnDeletedNote; foreach (var key in tact.Keys) { key.Notes = new ObservableCollection <ToDoNote>(_currentSample.Notes.Where (x => x.MidiNumber == (byte)key.Value && x.Tact == tact.TactNumber)); } Tacts.Add(tact); } }