В моем приложении WPF у меня есть несколько RadPanelItems внутри моего RadPanelBar
, и при загрузке формы все панели будут открыты.
Но иногда полоса прокрутки опускается вниз, что делает последний PanelItem видимым вместоfirst RadPanelItem
.
XAML:
<telerik:RadPanelBar Name="panelScroll" Grid.Row="0" VerticalAlignment="Stretch" telerik:StyleManager.Theme="Windows8" ExpandMode="Multiple">
//5 RadPanelItem
</telerik:RadPanelBar>
Теперь мне нужно убедиться, что полоса прокрутки идет вверх при загрузке формы.
Я пытался, как приведенный ниже код выполняется при загрузке формы,
Метод 1: (xaml.cs)
ScrollViewer scrollViewer = GetVisualChild<ScrollViewer>(panelScroll);
if (scrollViewer != null)
scrollViewer.ScrollToTop(); //Or ScrollToHome
Метод 2: WrappedRadPanelBar со средством просмотра прокрутки (ViewModel)
public class ScrollViewerBehavior
{
public static bool GetAutoScrollToTop(DependencyObject obj)
{
return (bool)obj.GetValue(AutoScrollToTopProperty);
}
public static void SetAutoScrollToTop(DependencyObject obj, bool value)
{
obj.SetValue(AutoScrollToTopProperty, value);
}
public static readonly DependencyProperty AutoScrollToTopProperty =
DependencyProperty.RegisterAttached("AutoScrollToTop", typeof(bool), typeof(ScrollViewerBehavior), new PropertyMetadata(false, (o, e) =>
{
var scrollViewer = o as System.Windows.Controls.ScrollViewer;
if (scrollViewer == null)
{
return;
}
if ((bool)e.NewValue)
{
scrollViewer.ScrollToTop();
SetAutoScrollToTop(o, false);
}
}));
}
public bool ResetScroll
{
get { return m_bResetScroll; }
set
{
if (m_bResetScroll != value)
{
m_bResetScroll = value;
OnPropertyChanged();
}
}
}
<ScrollViewer Converter:ScrollViewerBehavior.AutoScrollToTop="{Binding ResetScroll, Mode=TwoWay}">
Я все еще получаю ту же проблему.В любом случае я могу сделать полосу прокрутки вверх во время загрузки формы?