2016-08-23 2 views

답변

3

나는 직접 해결책이 없다고 생각합니다. 기본 스크롤 뷰 렌더러를 확장하여 사용자 정의 렌더러를 만들어야합니다. 제가 한 일은 당신의 목적을 달성하기를 바랍니다.

안드로이드 특정 코드 :

[assembly: ExportRenderer(typeof(Xamarin.Forms.ScrollView), typeof(ResponsiveFramework.Droid.ScrollViewEXRenderer))] 
namespace ResponsiveFramework.Droid 
{ 
    public class ScrollViewEXRenderer : ScrollViewRenderer 
    { 
     protected override void OnElementChanged(VisualElementChangedEventArgs e) 
     { 
      base.OnElementChanged(e); 

      if (e.OldElement != null || this.Element == null) 
      { 
       return; 
      } 

      if (e.OldElement !=null) 
      { 
       e.OldElement.PropertyChanged -= OnElementPropetyChanged; 
      } 

      e.NewElement.PropertyChanged += OnElementPropetyChanged; 
     } 

     private void OnElementPropetyChanged(object sender, PropertyChangedEventArgs e) 
     { 
      if (ChildCount > 0) 
      { 
       GetChildAt(0).HorizontalScrollBarEnabled = false; 
      } 
     } 
    } 
} 

아이폰 OS 특정 코드 :

[assembly: ExportRenderer(typeof(Xamarin.Forms.ScrollView), typeof(ResponsiveFramework.iOS.ScrollViewEXRenderer))] 
namespace ResponsiveFramework.iOS 
{ 
    public class ScrollViewEXRenderer : ScrollViewRenderer 
    { 
     protected override void OnElementChanged(VisualElementChangedEventArgs e) 
     { 
      base.OnElementChanged(e); 

      var result = this.Element.GetValue(ScrollViewPoperty.HorizontalScrollBarVisibleProperty); 
      bool IsHorizontalScrollBarVisible = Convert.ToBoolean(result); 
      if (IsHorizontalScrollBarVisible == false) 
      { 
       if (e.OldElement != null || this.Element == null) 
       { 
        return; 
       } 

       if (e.OldElement != null) 
       { 
        e.OldElement.PropertyChanged -= OnElementPropertyChanged; 
       } 

       e.NewElement.PropertyChanged += OnElementPropertyChanged; 
      } 
     } 
     private void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) 
     { 

      this.ShowsHorizontalScrollIndicator = false; 
     } 
    } 
} 
+0

은 다음과 같습니다 안드로이드에만 적용됩니다. 문제는 Xamarin 양식 (태그의 다른 대상 포함)에 대한 것이 었습니다. - 이것을 다른 목표에도 사용하는 것에 대한 대답에 더 많은 세부 사항을 추가 할 수 있습니까? - 적어도 이것을 연결하는 방법에 대한 링크는 충분합니다 (예 : 스크롤 막대를 제거하려는 컨트롤에서 사용하도록 XAML에서 뭔가를해야합니까?) – BrainSlugs83

+0

@ BrainSlugs83 IOS 렌더러 용 코드를 추가했습니다. Xaml에서 아무 일도하지 않고 연결하려면 사용하려는 컨트롤에 대한 렌더러를 내 보내면됩니다. 위 샘플에서 보여지는 것처럼. –

+0

@ BrainSlugs83 https://github.com/veloxcore/Xamstrap src 폴더에서 saample을 찾을 수 있습니다. –

관련 문제