A possible workaround here is to make the panel parent of the buttons visible.
RadPageViewStripElement element = this.radPageView1.ViewElement as RadPageViewStripElement;
element.ItemContainer.ButtonsPanel.DrawFill = true;
element.ItemContainer.ButtonsPanel.NumberOfColors = 1;
How to reproduce:
public Form1()
{
InitializeComponent();
this.radPageView1.ItemSizeMode = Telerik.WinControls.UI.PageViewItemSizeMode.EqualSize;
this.radPageView1.ItemSize = new Size(50, 20);
}
I attached a video and the code I used. I am trying to remove and add pageviews. (I would hide them it i knew how)
When I add the pageview back in while the hamburger menu is closed it somewhat expands the tabs. I would like it to leave it closed
To reproduce: add a RadPageView in NavigationView and set the following property: Dim view As RadPageViewNavigationViewElement = TryCast(Me.RadPageView1.ViewElement, RadPageViewNavigationViewElement) view.CollapsedPaneWidth = 300 The expected result is that the navigation view default's width is set to 300 when loading. However, it is adjusted when you expand and collapse the hamburger.
At the moment the items in a similar setup can be navigated using the arrow keys
When you set the RightToLeft property to Yes, you will obtain incorrect layout. Please refer to the attached gif file.
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); } } } }
To reproduce: please follow the steps illustrated in the attached gif file. Workaround: add pages as follows: Click the Smart Tag of RadPageView and then click the Add Page link five times. Additional information how to get started with RadPageView is available in the following help article: https://docs.telerik.com/devtools/winforms/pageview/stripview/getting-started
To reproduce: please refer to the attached sample project and follow the illustarted steps in the attached gif file.
Steps to reproduce: 1. Set the main screen on 125-percent scale 2. Run attached sample application (1107416 RadPageView Issue.zip). 3. Click menu item "ShowPageView". After showing the page view in a DocumentWindow, the SelectedPageChanging/SelectedPageChanged events are fired twice. Workaround: Replace RadPageView with custom one: public class CustomPageView : RadPageView { protected override void ScaleControl(SizeF factor, BoundsSpecified specified) { this.SuspendEvents(); base.ScaleControl(factor, specified); this.ResumeEvents(); } }
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
To reproduce: 1. Add a RadPageView with several pages. 2. Disabled some of the pages. 3. When running the application, try to navigate through pages with the arrow keys. You will notice that the disabled pages are also selected. Workaround: public class CustomPageView : RadPageView { public override string ThemeClassName { get { return typeof(RadPageView).FullName; } } protected override RadPageViewElement CreateUI() { if (this.ViewMode == PageViewMode.Strip) { return new CustomViewElement(); } return base.CreateUI(); } } public class CustomViewElement : RadPageViewStripElement { protected override Type ThemeEffectiveType { get { return typeof(RadPageViewStripElement); } } protected override bool CanSelectItem(RadPageViewItem item) { bool result= base.CanSelectItem(item); return result && item.Enabled; } }
To reproduce: - Add a RadPageView with several pages to a form. - View the tabs by setting the SelectedTab property. - Create a form instance and show it with the ShowDialog method. - Select the second tab. - Reopen the form and select a tab after the second. You will notice that the content is not changed. Workaround: Create a new instance each time when the form is shown.
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
Hello, PageView with Windows8 Theme, ViewMode Stack, Stack Position Left Tabs are drawn incorrectly, see attachment. can i work around this issue? Thanks
To reproduce: - Add RadPageView change the view to ExplorerBar and add some pages with controls. - Start the application expand all pages and scroll. Workaround: class MyPageView : RadPageView { protected override RadPageViewElement CreateUI() { if (this.ViewMode == PageViewMode.ExplorerBar) { return new MyExplorerBarElement(); } return base.CreateUI(); } } class MyExplorerBarElement : RadPageViewExplorerBarElement { protected override bool IsChildElementExternal(Telerik.WinControls.RadElement element) { return !(element is RadPageViewElementBase) && base.IsChildElementExternal(element); } protected override Type ThemeEffectiveType { get { return typeof(RadPageViewExplorerBarElement); } } }
To reproduce: 1. Add a RadPageView with no pages and set its Dock property to Fill. 2. Set the ViewMode property to ExplorerBar at design time. 3. Use the following code snippet: private void AddOutputPage(int index) { string title = "Test-Page " + index; RadPageViewPage page = new RadPageViewPage(title); this.radPageView1.Pages.Add(page); } private void Form1_Load(object sender, EventArgs e) { for (int i = 0; i < 20; ++i) AddOutputPage(i); } As a result the current page header at the top of the RadPageView is not displayed until you resize the pageview.