Xamarin.Forms
प्रभाव
खोज…
परिचय
प्रभाव मंच विशिष्ट अनुकूलन को सरल बनाता है। जब एक Xamarin प्रपत्र नियंत्रण के गुणों को संशोधित करने की आवश्यकता होती है, तो प्रभाव का उपयोग किया जा सकता है। जब Xamarin प्रपत्र नियंत्रण के तरीकों को ओवरराइड करने की आवश्यकता होती है, तो कस्टम रेंडरर्स का उपयोग किया जा सकता है
प्रवेश नियंत्रण के लिए प्लेटफ़ॉर्म विशिष्ट प्रभाव जोड़ना
- PCL फ़ाइल का उपयोग करके एक नया Xamarin Forms ऐप बनाएं -> नया समाधान -> मल्टीप्लाफ़्ट एप्लिकेशन -> Xamarin फ़ॉर्म -> फ़ॉर्म ऐप; इस परियोजना का नाम
EffectsDemo
- IOS प्रोजेक्ट के तहत, एक नया
Effect
क्लास जोड़ें, जोPlatformEffect
क्लास से इनहेरिट करता है औरOnAttached
,OnDetached
औरOnElementPropertyChanged
तरीकों को ओवरराइड करता है, दो विशेषताओं का ध्यान देंResolutionGroupName
औरExportEffect
, ये PCL / शेयर्ड प्रोजेक्ट से इस आशय का उपभोग करने के लिए आवश्यक हैं।
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
नामक एक नया वर्ग बनाएं, जोFocusEffect
से विरासत मेंRoutingEffect
। पीसीएल को प्रभाव के मंच विशिष्ट कार्यान्वयन को तत्काल करने के लिए यह आवश्यक है। नीचे नमूना कोड: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>
चूंकि प्रभाव केवल iOS संस्करण में लागू किया गया था, जब ऐप iOS Simulator
में Entry
बैकग्राउंड कलर में बदलाव पर चलता है और Android Emulator
में कुछ भी नहीं होता है क्योंकि Effect
Droid
प्रोजेक्ट के तहत नहीं बनाया गया था