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

