2016-05-06 10 views
8

में आइटम के लिए महत्वपूर्ण मान जोड़ना मैं देश चुनने के लिए एक्समरिन पिकर का उपयोग कर रहा हूं। पिकर में देशों को कड़ी मेहनत की जाती है। क्या कोई तरीका है कि मैं प्रत्येक देश के नाम को एक प्रमुख मूल्य के माध्यम से पहचान सकता हूं। मैंने एसएपीयूआई 5 का उपयोग करके इसी तरह से ऐसा किया है।पिकर

<core:Item key="AF" text="Afghanistan " /> 
<core:Item key="AL" text="Albania " /> 
<core:Item key="DZ" text="Algeria " /> 
<core:Item key="VI" text="Amer.Virgin Is. " /> 

इसी तरह, वहाँ Xamarin रूप चयनकर्ता में प्रत्येक देश के लिए एक महत्वपूर्ण मूल्य जोड़ने के लिए मेरे लिए एक तरीका है?

उत्तर

3

नहीं, मुख्य संपत्ति xamarin पिकर में उपलब्ध है। लेकिन, आप इसे ज़ैमरिन पिकर क्लास के डिक्शनरी क्लास और चयनित इंडेक्स प्रॉपर्टी का उपयोग करके कार्यान्वित कर सकते हैं।

निम्नलिखित कोड स्निपेट का उपयोग करके इसे लागू:

class PickerDemoPage : ContentPage 
     { 
      // Dictionary to get Color from color name. 
      Dictionary<string, Color> nameToColor = new Dictionary<string, Color> 
      { 
       { "Aqua", Color.Aqua }, { "Black", Color.Black }, 
       { "Blue", Color.Blue }, { "Fuschia", Color.Fuschia }, 
       { "Gray", Color.Gray }, { "Green", Color.Green }, 
       { "Lime", Color.Lime }, { "Maroon", Color.Maroon }, 
       { "Navy", Color.Navy }, { "Olive", Color.Olive }, 
       { "Purple", Color.Purple }, { "Red", Color.Red }, 
       { "Silver", Color.Silver }, { "Teal", Color.Teal }, 
       { "White", Color.White }, { "Yellow", Color.Yellow } 
      }; 

      public PickerDemoPage() 
      { 
       Label header = new Label 
       { 
        Text = "Picker", 
        FontSize = Device.GetNamedSize (NamedSize.Large, typeof(Label)), 
        HorizontalOptions = LayoutOptions.Center 
       }; 

       Picker picker = new Picker 
       { 
        Title = "Color", 
        VerticalOptions = LayoutOptions.CenterAndExpand 
       }; 

       foreach (string colorName in nameToColor.Keys) 
       { 
        picker.Items.Add(colorName); 
       } 

       // Create BoxView for displaying picked Color 
       BoxView boxView = new BoxView 
       { 
        WidthRequest = 150, 
        HeightRequest = 150, 
        HorizontalOptions = LayoutOptions.Center, 
        VerticalOptions = LayoutOptions.CenterAndExpand 
       }; 

       picker.SelectedIndexChanged += (sender, args) => 
        { 
         if (picker.SelectedIndex == -1) 
         { 
          boxView.Color = Color.Default; 
         } 
         else 
         { 
          string colorName = picker.Items[picker.SelectedIndex]; 
          boxView.Color = nameToColor[colorName]; 
         } 
        }; 

       // Accomodate iPhone status bar. 
       this.Padding = new Thickness(10, Device.OnPlatform(20, 0, 0), 10, 5); 

       // Build the page. 
       this.Content = new StackLayout 
       { 
        Children = 
        { 
         header, 
         picker, 
         boxView 
        } 
       }; 

      } 
     } 

स्रोत: https://developer.xamarin.com/api/type/Xamarin.Forms.Picker/

5

एक पिकर में मुख्य मान-जोड़े का उपयोग कर डेटा बाइंडिंग का उपयोग करने का एक तरीका है।

सबसे पहले आपको फॉर्म के व्यू मॉडल में शब्दकोश को परिभाषित करना होगा और एक ऐसी संपत्ति को परिभाषित करना होगा जो शब्दकोश कुंजी-मूल्य-जोड़े की सूची देता है। इसके अलावा वर्तमान में चयनित आइटम के लिए एक बाध्यकारी की जरूरत है:

class MyViewModel 
{ 
    ... 
    private Dictionary<string, string> PickerItems = 
    new Dictionary<string, string>() { {"AF", "Afghanistan"}, {"AL", "Albania" } }; 

    public List<KeyValuePair<string, string>> PickerItemList 
    { 
     get => PickerItems.ToList(); 
    } 

    private KeyValuePair<string, string> _selectedItem; 
    public KeyValuePair<string, string> SelectedItem 
    { 
     get => _selectedItem; 
     set => _selectedItem = value; 
    } 
    ... 
} 

दूसरा आप पिकर्स परिभाषा पिकर्स ItemsSource, ItemDisplayBinding और SelectedItem बाइंडिंग सेट करने के लिए:

<Picker 
    ItemDisplayBinding="{Binding Value}" 
    ItemsSource="{Binding PickerItemList}" 
    SelectedItem="{Binding SelectedItem}" /> 

इस देखते हुए, आप प्राप्त कर सकते हैं https://developer.xamarin.com/guides/xamarin-forms/user-interface/picker/populating-itemssource/#Populating_a_Picker_with_Data_Using_Data_Binding

: के माध्यम से

SelectedItem.Key 

अतिरिक्त पठन दृश्य मॉडल में चयनित आइटम के प्रमुख

+0

उत्कृष्ट कोड नमूना। अभी भी पूरी तरह से समझने की कोशिश कर रहा है कि यह सब एक साथ कैसे काम करता है, लेकिन सबसे सरल उदाहरण मैं पा सकता हूं। मैं किसी भी अन्य के लिए आसानी से कोड में चयनित इटैम की कुंजी और मूल्यों तक पहुंचने में सक्षम था जो ऐसा करना चाह सकता है। – Tim

+0

इस संपत्ति को xaml में पिकर में जोड़ें, और फिर किसी भी विधि का नाम दें। <पिकर चयनित इंडेक्स चेंज = "OnPickerChangedEvent" /> xaml.cs सार्वजनिक शून्य पर उस विधि को कॉल करें OnPickerChangedEvent (ऑब्जेक्ट प्रेषक, EventArgs ई) { var picker = (पिकर) प्रेषक; var myIndex = picker.SelectedIndex; var myData = this.MyViewModel.SelectedItem.Key; } – Tim

संबंधित मुद्दे