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