खोज…


परिचय

प्रभाव मंच विशिष्ट अनुकूलन को सरल बनाता है। जब एक Xamarin प्रपत्र नियंत्रण के गुणों को संशोधित करने की आवश्यकता होती है, तो प्रभाव का उपयोग किया जा सकता है। जब Xamarin प्रपत्र नियंत्रण के तरीकों को ओवरराइड करने की आवश्यकता होती है, तो कस्टम रेंडरर्स का उपयोग किया जा सकता है

प्रवेश नियंत्रण के लिए प्लेटफ़ॉर्म विशिष्ट प्रभाव जोड़ना

  1. PCL फ़ाइल का उपयोग करके एक नया Xamarin Forms ऐप बनाएं -> नया समाधान -> मल्टीप्लाफ़्ट एप्लिकेशन -> Xamarin फ़ॉर्म -> फ़ॉर्म ऐप; इस परियोजना का नाम EffectsDemo
  2. 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);
         }
     }
    

    }}

  1. एप्लिकेशन में इस आशय का उपभोग करने के लिए, PCL परियोजना के तहत, FocusEffect नामक एक नया वर्ग बनाएं, जो FocusEffect से विरासत में RoutingEffect । पीसीएल को प्रभाव के मंच विशिष्ट कार्यान्वयन को तत्काल करने के लिए यह आवश्यक है। नीचे नमूना कोड:

    using Xamarin.Forms;
    namespace EffectsDemo
    {
        public class FocusEffect : RoutingEffect
        {
            public FocusEffect() : base("xhackers.FocusEffect")
            {
            }
        }
    }
    
  2. 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 संस्करण के लिए जोड़ा गया

प्रभाव Droid संस्करण के लिए नजरअंदाज कर दिया

चूंकि प्रभाव केवल iOS संस्करण में लागू किया गया था, जब ऐप iOS Simulator में Entry बैकग्राउंड कलर में बदलाव पर चलता है और Android Emulator में कुछ भी नहीं होता है क्योंकि Effect Droid प्रोजेक्ट के तहत नहीं बनाया गया था



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow