Approved
Last Updated: 06 May 2019 08:10 by ADMIN
ADMIN
Created by: Stefan
Comments: 6
Category: PageView
Type: Feature Request
16
Add functionality for resizing the tabs of RadPageView pages (resizing the RadPageViewPageItem).

Resolution : This functionality can be achieved with the MinSize/MaxSize properties. For example:

radPageViewPage1.Item.MinSize = new Size(150, 30);
Completed
Last Updated: 28 Sep 2018 07:56 by Dimitar
Workaround:


        public class CustomPageView : RadPageView
        {
            public override string ThemeClassName  
            { 
                get 
                { 
                    return typeof(RadPageView).FullName;  
                }
            }

            protected override RadPageViewElement CreateUI()
            {
                if (this.ViewMode == PageViewMode.NavigationView)
                {
                    return new CustomRadPageViewNavigationViewElement();
                }
                return base.CreateUI();
            }
        }

        public class CustomRadPageViewNavigationViewElement : RadPageViewNavigationViewElement
        {
            protected override Type ThemeEffectiveType     
            { 
                get    
                { 
                    return typeof(RadPageViewNavigationViewElement);     
                }
            }

            public override void Expand()
            {
                if (!this.IsCollapsed)
                {
                    return;
                }

                FieldInfo pi = typeof(RadPageViewNavigationViewElement).GetField("isCollapsed", BindingFlags.NonPublic | BindingFlags.Instance);
                pi.SetValue(this, false); 
                this.ItemContainer.Visibility = ElementVisibility.Visible;

                NavigationViewDisplayModes mode = this.GetEffectiveDisplayMode(this.Size.Width);

                if (mode == NavigationViewDisplayModes.Expanded)
                {
                    
                    this.ItemContainer.MinSize = new Size(this.ExpandedPaneWidth, 0);
                }
                else
                {
                    this.PopupStack.Children.Insert(0, this.HamburgerButton);

                    if (!this.PopupStack.Children.Contains(this.ItemContainer))
                    {
                        this.PopupStack.Children.Add(this.ItemContainer);
                    }

                    this.HamburgerButton.Alignment = this.RightToLeft ? ContentAlignment.TopRight : ContentAlignment.TopLeft;
                    this.HamburgerButton.StretchHorizontally = true;
                    this.ItemContainer.ItemLayout.SetValue(RadPageViewStripElement.StripAlignmentProperty, StripViewAlignment.Right);
                    this.ItemContainer.ResetValue(RadElement.MinSizeProperty, ValueResetFlags.Animation);
                    this.ItemContainer.MinSize = new Size(this.ExpandedPaneWidth, 0);
                    this.ItemContainer.MaxSize = Size.Empty;

                    foreach (RadPageViewItem item in this.Items)
                    {
                        item.DrawText = true;
                    }

                    if (this.Popup.ElementTree.RootElement.ElementState != ElementState.Loaded)
                    {
                        Size size = new Size(this.ExpandedPaneWidth, (int)this.DesiredSize.Height);
                        this.Popup.LoadElementTree(size);
                    }

                    ApplyThemeToPopup(this.ElementTree, this.Popup);

                    this.Popup.Size = new Size(this.ExpandedPaneWidth, (int)this.DesiredSize.Height);
                    this.Popup.DropDownAnimationDirection = this.RightToLeft ? RadDirection.Left : RadDirection.Right;
                    this.Popup.HorizontalPopupAlignment = this.RightToLeft ? HorizontalPopupAlignment.RightToRight : HorizontalPopupAlignment.LeftToLeft;
                    this.Popup.VerticalPopupAlignment = VerticalPopupAlignment.TopToBottom;
                    this.Popup.RootElement.BackColor = this.BackColor;

                    this.Popup.Show(this.PointToScreen(this.RightToLeft ? new Point(this.Bounds.Right, this.Bounds.Top) : new Point(this.Bounds.Left, this.Bounds.Top)));
                }
            }

            public override void Collapse()
            {
                if (this.IsCollapsed)
                {
                    return;
                }
                FieldInfo pi = typeof(RadPageViewNavigationViewElement).GetField("isCollapsed", BindingFlags.NonPublic | BindingFlags.Instance);
                pi.SetValue(this, true); 

                foreach (RadPageViewItem item in this.Items)
                {
                    item.DrawText = false;
                }

                NavigationViewDisplayModes mode = this.GetEffectiveDisplayMode(this.Size.Width);             

                if (mode == NavigationViewDisplayModes.Expanded)
                {
                    this.ItemContainer.MinSize = new Size(this.CollapsedPaneWidth, 0);
                }
                else
                {
                    FieldInfo fi = typeof(RadPageViewNavigationViewElement).GetField("programmaticallyClosingPopup", BindingFlags.NonPublic | BindingFlags.Instance);
                    fi.SetValue(this, true); 
                    this.Popup.ClosePopup(RadPopupCloseReason.Mouse);
                    this.HamburgerButton.StretchHorizontally = false;
                    fi = typeof(RadPageViewNavigationViewElement).GetField("programmaticallyClosingPopup", BindingFlags.NonPublic | BindingFlags.Instance);
                    fi.SetValue(this, false); 

                    if (mode == NavigationViewDisplayModes.Compact)
                    {
                        this.ItemContainer.MinSize = new Size(this.CollapsedPaneWidth, 0);
                        this.ItemContainer.MaxSize = new Size(this.CollapsedPaneWidth, 0);

                        if (!this.Children.Contains(this.ItemContainer))
                        {
                            this.Popup.RootElement.ResetValue(RadItem.BackColorProperty, ValueResetFlags.Local);
                            this.Children.Insert(0, this.ItemContainer);
                        }
                    }

                    if (!this.Children.Contains(this.HamburgerButton))
                    {
                        this.HamburgerButton.ResetValue(AlignmentProperty, ValueResetFlags.Local);
                        this.Children.Add(this.HamburgerButton);
                    }
                }
            }
        }
Completed
Last Updated: 16 Aug 2017 08:14 by ADMIN
ADMIN
Created by: Boryana
Comments: 1
Category: PageView
Type: Feature Request
4
Show the focus cue of the selected tab in a StripView RadPageView.
Completed
Last Updated: 16 Aug 2017 08:14 by ADMIN
ADMIN
Created by: Alexander
Comments: 0
Category: PageView
Type: Feature Request
6
Add functionality to the control for selecting pages using access keys.
Approved
Last Updated: 15 Aug 2017 10:02 by Todor
Approved
Last Updated: 15 Aug 2017 10:02 by ADMIN
ADMIN
Created by: Dess | Tech Support Engineer, Sr.
Comments: 2
Category: PageView
Type: Feature Request
1

			
Approved
Last Updated: 15 Aug 2017 09:45 by ADMIN
Approved
Last Updated: 15 Aug 2017 09:38 by Jesse Dyck
ADMIN
Created by: Anton
Comments: 2
Category: PageView
Type: Feature Request
5
RadPageView - Add support for Kinetic Scrolling.
Approved
Last Updated: 15 Aug 2017 09:36 by ADMIN
Feature missing in the Outlook mode of the PageView control is the ability to move a page up or down (i.e., change their order). This is accomplished with an additional menu item called "Navigation Pane Options", and a checked list box with all available pages and up/down buttons. Related to this would be a way to serialize the PageView content and order to XML.
Approved
Last Updated: 15 Aug 2017 09:23 by ADMIN
The solution could be similar to the behavior of the control's Outlook mode.
Approved
Last Updated: 15 Aug 2017 09:23 by ADMIN
ADD. RadPageView - add scrolling functionality in RadPageViewStackMode where the scroll buttons appear below and above the page items
Approved
Last Updated: 15 Aug 2017 09:23 by ADMIN
When RadPageView is in the ExplorerBar view, it should order its pages' bars opposite to the order of the Stack view.
Approved
Last Updated: 15 Aug 2017 09:23 by ADMIN
ADMIN
Created by: Nikolay
Comments: 0
Category: PageView
Type: Feature Request
1
A nice addition to RadPageView will the ability to scroll by pixel or by page.
Approved
Last Updated: 15 Aug 2017 09:23 by ADMIN
ADMIN
Created by: Nikolay
Comments: 0
Category: PageView
Type: Feature Request
1
User should be able to define the position of the strip buttons. For example, the ItemList buttons should be situated on the left side of RadPageView while the scroll buttons should be on the right side.
Completed
Last Updated: 16 Feb 2017 07:23 by ADMIN
Currently the pages are wrapped around, i.e. when one reaches the last pages and select next using the down arrow key the first page gets selected

Workaround: 
Public Class MyRadPageView
    Inherits RadPageView

    Public Overrides Property ThemeClassName As String
        Get
            Return GetType(RadPageView).FullName
        End Get
        Set(value As String)
            MyBase.ThemeClassName = value
        End Set
    End Property

    Protected Overrides Function CreateUI() As RadPageViewElement
        Select Case Me.ViewMode
            Case PageViewMode.Stack
                Return New RadPageViewStackElement()
            Case PageViewMode.Outlook
                Return New RadPageViewOutlookElement()
            Case PageViewMode.ExplorerBar
                Return New RadPageViewExplorerBarElement()
            Case PageViewMode.Backstage
                Return New MyRadPageViewBackstageElement()
            Case Else
                Return New RadPageViewStripElement()
        End Select
    End Function

End Class

Public Class MyRadPageViewBackstageElement
    Inherits RadPageViewBackstageElement

    Protected Overrides ReadOnly Property ThemeEffectiveType() As Type
        Get
            Return GetType(RadPageViewBackstageElement)
        End Get
    End Property

    Protected Overrides Function SelectNextItemCore(current As RadPageViewItem, forward As Boolean, wrap As Boolean) As Boolean
        Return MyBase.SelectNextItemCore(current, forward, False)
    End Function

    Protected Overrides Sub ProcessKeyDown(e As KeyEventArgs)
        If Me.IsNextKey(e.KeyCode) AndAlso Not Me.IsEditing Then
            Me.SelectNextItem()
        ElseIf Me.IsPreviousKey(e.KeyCode) AndAlso Not Me.IsEditing Then
            Me.SelectPreviousItem()
        ElseIf e.KeyCode = Keys.Home AndAlso Not Me.IsEditing Then
            Me.Owner.SelectedPage = Nothing
            Me.SetSelectedItem(Me.Items.First())
        ElseIf e.KeyCode = Keys.End AndAlso Not Me.IsEditing Then
            Me.Owner.SelectedPage = Nothing
            Me.SetSelectedItem(Me.Items.Last())
        ElseIf e.KeyCode = Keys.F2 Then
            BeginEdit()
        ElseIf e.KeyCode = Keys.Escape Then
            CancelEdit()
        ElseIf e.KeyCode = Keys.Enter AndAlso Me.IsEditing AndAlso Me.ActiveEditor.Validate() Then
            EndEdit()
        End If
    End Sub

End Class
Declined
Last Updated: 20 Jul 2016 09:12 by ADMIN
ADMIN
Created by: Boryana
Comments: 4
Category: PageView
Type: Feature Request
18
This feature request refers to RadPageView in Strip ViewMode, which supports a multi-line StripElement. Thus StripItems will appear in different lines.
Approved
Last Updated: 11 Jul 2016 12:03 by ADMIN
To reproduce: 

for (int i = 0; i < 20; i++)
{
    this.radPageView1.Pages.Add(new RadPageViewPage("Page" + i));
}

this.radPageView1.ViewMode = PageViewMode.Backstage;

Only a few of the pages are visible and the user is not allowed to scroll to see the rest of them.

Workaround: 
1. Make use of the strip buttons:

            RadPageViewBackstageElement el = this.radPageView1.ViewElement as RadPageViewBackstageElement;
            el.ItemContainer.ButtonsPanel.Visibility = ElementVisibility.Visible; 

2. Place the control in RadScrollablePanel

 RadScrollablePanel scrollablePanel = new RadScrollablePanel();
            scrollablePanel.Dock =  DockStyle.Fill;
            this.Controls.Add(scrollablePanel);

            RadPageView pageView = new RadPageView();
            pageView.ViewMode = PageViewMode.Backstage;
            scrollablePanel.Controls.Add(pageView);

            for (int i = 0; i < 50; i++)
            {
                pageView.Pages.Add(new RadPageViewPage("Page " + i.ToString()));
            }

            
            pageView.Size = new System.Drawing.Size(1000,2500);
Completed
Last Updated: 11 Nov 2015 11:08 by ADMIN
To reproduce: 
1. Drag and drop RadPageView on the form
2. Select the control and open a smart tag 
3. You will see that the 'Dock in parent container' option is not added 
1 2