Как да добавя разширен клас ScrollViewer към XAML файла?

Търсих начин да анимирам превъртането на ScrollViewer и намерих пример, но когато се опитам да добавя класа към XAML файла, получавам грешка:

Грешка 2
Типът „AniScrollViewer“ не е намерен. Уверете се, че не ви липсва препратка към сглобка и че всички референтни сглобки са изградени.

това е кодът I намерих във форум и добавих класа към моя cs файл:

public class AniScrollViewer:ScrollViewer
{

  public static DependencyProperty CurrentVerticalOffsetProperty = DependencyProperty.Register("CurrentVerticalOffset", typeof(double), typeof(AniScrollViewer), new PropertyMetadata(new PropertyChangedCallback(OnVerticalChanged)));

  public static DependencyProperty CurrentHorizontalOffsetProperty = DependencyProperty.Register("CurrentHorizontalOffsetOffset", typeof(double), typeof(AniScrollViewer), new PropertyMetadata(new PropertyChangedCallback(OnHorizontalChanged)));

  private static void OnVerticalChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
  {
    AniScrollViewer viewer = d as AniScrollViewer;
    viewer.ScrollToVerticalOffset((double)e.NewValue);
  }

  private static void OnHorizontalChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
  {
    AniScrollViewer viewer = d as AniScrollViewer;
    viewer.ScrollToHorizontalOffset((double)e.NewValue);
  }

  public double CurrentHorizontalOffset
  {
    get { return (double)this.GetValue(CurrentHorizontalOffsetProperty); }
    set { this.SetValue(CurrentHorizontalOffsetProperty, value); }
  }

  public double CurrentVerticalOffset
  {
    get { return (double)this.GetValue(CurrentVerticalOffsetProperty); }
    set { this.SetValue(CurrentVerticalOffsetProperty, value); }
  }
}

Ето пример за кода на анимацията:

private void ScrollToPosition(double x, double y)
{
  DoubleAnimation vertAnim = new DoubleAnimation();
  vertAnim.From = MainScrollViewer.VerticalOffset;
  vertAnim.To = y;
  vertAnim.DecelerationRatio = .2;
  vertAnim.Duration = new Duration(TimeSpan.FromMilliseconds(250));

  DoubleAnimation horzAnim = new DoubleAnimation();
  horzAnim.From = MainScrollViewer.HorizontalOffset;
  horzAnim.To = x;
  horzAnim.DecelerationRatio = .2;
  horzAnim.Duration = new Duration(TimeSpan.FromMilliseconds(300));

  Storyboard sb = new Storyboard();
  sb.Children.Add(vertAnim);
  sb.Children.Add(horzAnim);

  Storyboard.SetTarget(vertAnim, MainScrollViewer);
  Storyboard.SetTargetProperty(vertAnim, new PropertyPath(AniScrollViewer.CurrentVerticalOffsetProperty));
  Storyboard.SetTarget(horzAnim, MainScrollViewer);
  Storyboard.SetTargetProperty(horzAnim, new PropertyPath(AniScrollViewer.CurrentHorizontalOffsetProperty));

  sb.Begin();
}

какво ми липсва


person Community    schedule 23.03.2009    source източник


Отговори (1)


Вашият xaml файл се нуждае от препратка към вашето пространство от имена, за да намерите вашия AniScrollViewer

Да кажем, че вашият AniScrollViewer се намира в пространството за имена Test, можете да го използвате във вашия xaml така:

<Window x:Class="something"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:Test="clr-namespace:Test;assembly=">

    <Test:AniScrollViewer />

</Window>
person Arcturus    schedule 23.03.2009