Inheritance: System.Windows.Controls.ContentControl
コード例 #1
0
ファイル: SlideManager.cs プロジェクト: garyjohnson/wpnest
        /// <summary>
        /// Initializes the position of the slide based on location.
        /// </summary>
        /// <param name="slide">The slide instance.</param>
        /// <param name="isFirst">A property indicating whether the slide is the
        /// first to be managed.</param>
        private void InitializePosition(Slide slide, bool isFirst)
        {
            SlidePosition c = slide.Position;
            SlidePosition expected = isFirst ? SlidePosition.Normal : SlidePosition.Right;
            if (c != expected)
            {
                slide.Position = expected;
            }
            // CONSIDER: Need to modify all others as well?

            if (_slides.First != null && _slides.First.Value == slide)
            {
                _current = _slides.First;
            }
        }
コード例 #2
0
ファイル: SlideManager.cs プロジェクト: garyjohnson/wpnest
        /// <summary>
        /// Moves to a specific slide, moving the others to the appropriate
        /// direction on screen.
        /// </summary>
        /// <param name="slide">The slide to move to.</param>
        public void MoveTo(Slide slide)
        {
            LinkedListNode<Slide> sn = _slides.Find(slide);
            if (sn != null)
            {
                // Before
                LinkedListNode<Slide> otherNode = sn.Previous;
                while (otherNode != null)
                {
                    otherNode.Value.Position = SlidePosition.Right;
                    otherNode = otherNode.Previous;
                }

                // The slide
                slide.Position = SlidePosition.Normal;
                _current = sn;

                // After
                otherNode = sn.Next;
                while (otherNode != null)
                {
                    otherNode.Value.Position = SlidePosition.Left;
                    otherNode = otherNode.Next;
                }
            }
        }
コード例 #3
0
ファイル: SlideManager.cs プロジェクト: garyjohnson/wpnest
 /// <summary>
 /// Remove a slide from management.
 /// </summary>
 /// <param name="slide">The slide instance.</param>
 public void Remove(Slide slide)
 {
     _slides.Remove(slide);
 }
コード例 #4
0
ファイル: SlideManager.cs プロジェクト: garyjohnson/wpnest
 /// <summary>
 /// Inserts a slide as the first in the linked list.
 /// </summary>
 /// <param name="newSlide">The new slide instance.</param>
 /// <returns>Returns the linked list node.</returns>
 public LinkedListNode<Slide> InsertFirst(Slide newSlide)
 {
     LinkedListNode<Slide> node = _slides.AddFirst(newSlide);
     InitializePosition(newSlide, true);
     return node;
 }
コード例 #5
0
ファイル: SlideManager.cs プロジェクト: garyjohnson/wpnest
 /// <summary>
 /// Insert a slide after a provided linked list node.
 /// </summary>
 /// <param name="before">The node to insert after.</param>
 /// <param name="newSlide">The new slide to insert.</param>
 /// <returns>Returns the new linked list node.</returns>
 public LinkedListNode<Slide> InsertAfter(LinkedListNode<Slide> before, Slide newSlide)
 {
     LinkedListNode<Slide> newNode;
     if (before == null)
     {
         newNode = _slides.AddFirst(newSlide);
     }
     else
     {
         newNode = _slides.AddAfter(before, newSlide);
     }
     InitializePosition(newSlide, before == null);
     return newNode;
 }
コード例 #6
0
ファイル: SlideManager.cs プロジェクト: garyjohnson/wpnest
        /// <summary>
        /// Manages a new slide, inserting it after an existing slide node.
        /// </summary>
        /// <param name="before">The node to insert after.</param>
        /// <param name="newSlide">The new slide instance.</param>
        /// <returns>Returns the linked list node that is inserted.</returns>
        public LinkedListNode<Slide> InsertAfter(Slide before, Slide newSlide)
        {
            if (before == null)
            {
                return InsertFirst(newSlide);
            }

            LinkedListNode<Slide> node = _slides.Find(before);
            return InsertAfter(node, newSlide);
        }
コード例 #7
0
        /// <summary>
        /// Creates a new slide and inserts it into the slide manager, plus
        /// visual tree.
        /// </summary>
        /// <param name="header">The text header to use.</param>
        /// <param name="content">The content to inside the slide.</param>
        /// <returns>Returns the new Slide instance.</returns>
        private Slide CreateAndInsertSlide(string header, object content)
        {
            Slide slide = new Slide();
            slide.Content = content;
            slide.Header = new ContentControl
            {
                Content = header,
                Style = (Style)Resources["TextHeaderContent"],
            };

            Slides.Children.Add(slide);
            _slides.InsertFirst(slide); // Front

            return slide;
        }
コード例 #8
0
 /// <summary>
 /// Remove a slide from management.
 /// </summary>
 /// <param name="slide">The slide instance.</param>
 public void Remove(Slide slide)
 {
     _slides.Remove(slide);
 }