Xamarin.Forms
효과
수색…
소개
효과로 인해 플랫폼 별 사용자 지정이 간단 해집니다. Xamarin Forms Control의 속성을 수정할 필요가있을 때 효과를 사용할 수 있습니다. Xamarin Forms Control의 메서드를 재정의해야하는 경우 사용자 지정 렌더러를 사용할 수 있습니다.
Entry 컨트롤에 대한 플랫폼 별 효과 추가
- PCL 파일 -> 새 솔루션 -> 다중 플랫폼 응용 -> Xamarin Forms -> Forms App을 사용하여 새 Xamarin Forms 응용 프로그램을 만듭니다. 프로젝트의 이름을
EffectsDemo
로EffectsDemo
- iOS 프로젝트에서
PlatformEffect
클래스를 상속 한 새Effect
클래스를 추가하고OnAttached
,OnDetached
및OnElementPropertyChanged
메서드를 재정의합니다.ResolutionGroupName
및ExportEffect
라는 두 속성을ResolutionGroupName
합니다.이 속성은 PCL / 공유 프로젝트에서이 효과를 소비하는 데 필요합니다.
OnAttached
는 사용자 정의를위한 로직이OnAttached
메소드입니다.OnDetached
는 정리 및 등록 취소가 발생하는 방법입니다.OnElementPropertyChanged
는 다른 요소의 속성 변경시 트리거되는 메서드입니다. 올바른 속성을 확인하려면 정확한 속성 변경을 확인하고 논리를 추가하십시오. 이 예제에서OnFocus
는Blue
을 제공하고OutofFocus
는Red
을 제공합니다.using System; using EffectsDemo.iOS; using UIKit; using Xamarin.Forms; using Xamarin.Forms.Platform.iOS; [assembly: ResolutionGroupName("xhackers")] [assembly: ExportEffect(typeof(FocusEffect), "FocusEffect")] namespace EffectsDemo.iOS { public class FocusEffect : PlatformEffect { public FocusEffect() { } UIColor backgroundColor; protected override void OnAttached() { try { Control.BackgroundColor = backgroundColor = UIColor.Red; } catch (Exception ex) { Console.WriteLine("Cannot set attacked property" + ex.Message); } } protected override void OnDetached() { throw new NotImplementedException(); } protected override void OnElementPropertyChanged(System.ComponentModel.PropertyChangedEventArgs args) { base.OnElementPropertyChanged(args); try { if (args.PropertyName == "IsFocused") { if (Control.BackgroundColor == backgroundColor) { Control.BackgroundColor = UIColor.Blue; } else { Control.BackgroundColor = backgroundColor; } } } catch (Exception ex) { Console.WriteLine("Cannot set property " + ex.Message); } }
}}
응용 프로그램에서이 효과를 소모하려면 아래
PCL
프로젝트라는 새 클래스를 만들FocusEffect
에서 상속RoutingEffect
. 이것은 PCL이 플랫폼 특정 효과 구현을 인스턴스화하는 데 필수적입니다. 아래 샘플 코드 :using Xamarin.Forms; namespace EffectsDemo { public class FocusEffect : RoutingEffect { public FocusEffect() : base("xhackers.FocusEffect") { } } }
XAML에서
Entry
컨트롤에 효과 추가<?xml version="1.0" encoding="utf-8"?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:EffectsDemo" x:Class="EffectsDemo.EffectsDemoPage"> <StackLayout Orientation="Horizontal" HorizontalOptions="Center" VerticalOptions="Center"> <Label Text="Effects Demo" HorizontalOptions="StartAndExpand" VerticalOptions="Center" ></Label> <Entry Text="Controlled by effects" HorizontalOptions="FillAndExpand" VerticalOptions="Center"> <Entry.Effects> <local:FocusEffect> </local:FocusEffect> </Entry.Effects> </Entry> </StackLayout> </ContentPage>
Effect가 iOS 버전에서만 구현 되었기 때문에, Entry
배경색 변경에 초점을 맞추고 iOS Simulator
에서 앱을 실행할 때 Droid
프로젝트에서 Effect
가 생성되지 않았기 때문에 Android Emulator
에서 아무 것도 발생하지 않습니다.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow