Benzer bir şey yaptım ve bunu yapmanın en iyi yolu, içeriğinizi kaydırma görüntüleyicisine koymak ve kaydırma çubuklarını kapatmaktı. Ardından, scrollviewer'ı kaydırmak için düğmelerinizi kodlayın.
Düzenleme: Boyutlandırmayla başa çıkmanın hiçbir yolu hakkında yorum yapmak.
İlk olarak, bu denetimi ContentControl olarak kurarsınız. Düğme denetimlerinizin yanı sıra kaydırma görüntüleyicisine sahip olan generic.xaml'de tanımlanan bir şablon olmalıdır. Bir şey gibi:
<Canvas x:Name="root">
<Button x:Name="left" Content="<"/>
<Button x:Name="right" Content=">"/>
<ScrollViewer x:Name="viewer" BorderThickness="0" VerticalScrollBarVisibility="Hidden">
<ContentPresenter />
</ScrollViewer>
</Canvas>
Sonra kontrolünde size OnApplyTemplate geçersiz kılmak gerekir: Düğme tıklama işleyicilerinde
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
left = GetTemplateChild("left") as Button;
left.Click += new RoutedEvent(YourHandler);
right = GetTemplateChild("right") as Button;
right.Click += new RoutedEvent(YourHandler);
// position your scroll buttons here, not writing that code
scroll = GetTemplateChild("viewer") as ScrollViewer;
root = GetTemplateChild("root") as Canvas;
var fe = this.Content as FrameworkElement;
if (fe != null)
{
fe.SizeChanged += new SizeChangedEventHandler(fe_SizeChanged);
}
}
void fe_SizeChanged(object sender, SizeChangedEventArgs e)
{
this.InvalidateMeasure();
}
protected override Size ArrangeOverride(Size finalSize)
{
if (!double.IsInfinity(scroll.ViewportHeight))
{
left.Visibility = (scroll.HorizontalOffset > 0);
right.Visibility = (scroll.HorizontalOffset < ScrollableHeight);
}
return base.ArrangeOverride(finalSize);
}
protected override Size MeasureOverride(Size availableSize)
{
scroll.Measure(availableSize);
return scroll.DesiredSize;
}
sen (1) görüntüleyici kaydırmak ve (2) yeni kontrol etmek gerekir düğmesinden birini saklamanız veya göstermeniz gerekip gerekmediğini görmek için HorizontalOffset'in değeri.
Yasal Uyarı: Bu kod, el ile yazıldığından ve farklı bir örneğe göre olduğu için muhtemelen çalışmaz.
o yöntemdeki sorun ben bir olay ben eklemek olabilir görmüyorum olmasıdır Bu, görünümün, düğmelerin görünür hale getirilmesi gerektiği şekilde değiştiğinde beni bilgilendirir. Sonuç olarak, düğmelerini her zaman görülebilir yapmak zorundayım, ki beğenmedim. – Nick