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);
}
}
}
}