예제 #1
0
        private void MouseLeftDownCommandExecute(MouseEventArgs param)
        {
            Point p = param.GetPosition(param.Source as UIElement);
            var res = VisualTreeHelper.HitTest(param.Source as UIElement, p);
            if (res.VisualHit is DependencyObject && res.VisualHit != null)
            {
                var result = Ancestors.FindAncestorOfType<ChordView>(res.VisualHit as DependencyObject);
                if (result != null)
                {
                    foreach (ChordLine line in ChordLines)
                    {
                        foreach (Chord chord in line.Chords)
                        {
                            if (chord.IsSelected) chord.IsSelected = false;
                        }
                    }

                    // Set selected chord:

                    _selectedChordView = (result as ChordView);
                    _selectedChord = ((result as ChordView).DataContext as Chord);
                    _selectedChord.IsSelected = true;

                    _mainWindowModel.NotesPlayed = _selectedChord.Notes;

                }
                else
                {
                    _selectedChordView = null;
                    if (_selectedChord != null)
                    {
                        _selectedChord.IsSelected = false;
                    }
                    _selectedChord = null;

                    _mainWindowModel.NotesPlayed = null;
                }
            }
            else
            {
                Console.WriteLine();
            }
        }
예제 #2
0
        private void BuildDocument(DocumentViewModel model)
        {
            ChordDocument.PageWidth = 850;
            ChordDocument.PageHeight = 1190;

            char[] sep = { '.' };
            var songTitle = model.Title.Split(sep)[0];

            Run title = new Run(songTitle);
            title.FontSize=40;

            Paragraph titlePar = new Paragraph();
            titlePar.Inlines.Add(title);
            titlePar.TextAlignment = TextAlignment.Center;
            titlePar.Margin = new Thickness(30);

            ChordDocument.Blocks.Add(titlePar);

            foreach (ChordLine line in model.ChordLines)
            {
                var section = new Section();
                var chordsPar = new Paragraph();
                chordsPar.Margin = new Thickness(0, 0, 10, 0);
                var grid = new NoteGrid();
                grid.DataContext = line;
                var gridPar = new Paragraph(new InlineUIContainer(grid));
                gridPar.Margin = new Thickness(10,0,10,0);

                var chords = new Canvas();
                chords.Height = 30;

                foreach (Chord chord in line.Chords)
                {
                    var chordView = new ChordView();
                    chordView.DataContext = chord;
                    chordView.MainBorder.BorderThickness = new Thickness(0);
                    chordView.MainBorder.BorderBrush = Brushes.Transparent;
                    chordView.MainBorder.BitmapEffect = null;
                    chordView.ChordLabel.FontSize = 20;
                    chords.Children.Add(chordView);
                }

                chordsPar.KeepWithNext = true;
                chordsPar.Inlines.Add(new InlineUIContainer(chords));

                section.Blocks.Add(chordsPar);
                section.Blocks.Add(gridPar);

                ChordDocument.Blocks.Add(section);
            }
        }