2016-06-09 3 views
1

WPF에서 사용할 Windows Phone 용 프로젝트를 운영하고 싶습니다. WPF는이 방법에 DependencyPropertyListener()을 알고하지 않습니다, 나는 인식, Loading Data when the User Scrolls to the EndWPF 용 DependencyPropertyListener()

코드를 반복하여 :

static void element_Loaded(object sender, RoutedEventArgs e) 
{ 
    FrameworkElement element = (FrameworkElement)sender; 
    element.Loaded -= element_Loaded; 
    ScrollViewer scrollViewer = FindChildOfType<ScrollViewer>(element); 
    if (scrollViewer == null) 
    { 
     throw new InvalidOperationException("ScrollViewer not found."); 
    } 

    var listener = new DependencyPropertyListener(); 
    listener.Changed 
     += delegate 
     { 
      bool atBottom = scrollViewer.VerticalOffset 
           >= scrollViewer.ScrollableHeight; 

      if (atBottom) 
      { 
       var atEnd = GetAtEndCommand(element); 
       if (atEnd != null) 
       { 
        atEnd.Execute(null); 
       }      
      } 
     }; 
    Binding binding = new Binding("VerticalOffset") { Source = scrollViewer }; 
    listener.Attach(scrollViewer, binding); 
} 

이 객체 주위에 방법이있을 것입니다 여기에 링크입니까?

답변

1

DependencyPropertyDescriptor을 사용하여 종속성 속성 값 변경 내용을들을 수 있습니다.

static void element_Loaded(object sender, RoutedEventArgs e) 
{ 
    FrameworkElement element = (FrameworkElement)sender; 
    element.Loaded -= element_Loaded; 
    ScrollViewer scrollViewer = FindChildOfType<ScrollViewer>(element); 
    if (scrollViewer == null) 
    { 
     throw new InvalidOperationException("ScrollViewer not found."); 
    } 

    var dpd = DependencyPropertyDescriptor.FromProperty(ScrollViewer.VerticalOffsetProperty, typeof(ScrollViewer)); 
    dpd.AddValueChanged(scrollViewer, delegate(object o, EventArgs args) 
    { 
     bool atBottom = scrollViewer.VerticalOffset 
         >= scrollViewer.ScrollableHeight; 
     if (atBottom) 
     { 
      var atEnd = GetAtEndCommand(element); 
      if (atEnd != null) 
      { 
       atEnd.Execute(null); 
      }     
     } 
    }); 
} 
+0

고마워요! 그것은 완벽하게 작동합니다! –