2017-12-20 4 views
1

나는 picker를 넣은 xaml 파일과 그것을 채우기위한 코드를 가지고있다. 아래 코드는 사용 : 나는 값을 얻기 위해 노력하고사전 키 쌍을 xamarin 양식의 선택기에 넣고 선택기에서 키 값을 검색하려면 어떻게해야합니까?

Dictionary<string, int> list = new Dictionary<string, int> 
      { 
       { "Aqua", 6}, 
       { "Red", 1 }, 
       { "Silver", 2 }, 
       { "Teal", 3 }, 
       { "White", 4 }, 
       { "Yellow", 55 } 
      }; 
      foreach (string item in list.Keys) 
      { 
       ddlPurpose.Items.Add(item); 
      } 

55 나는 노란색을 선택하지만 내가 얻을 수있는 유일한 것은 내가

var val1 = ddlPurpose.SelectedItem.ToString(); 
     var val2 = ddlPurpose.SelectedIndex; 

인가 선택한 값을 얻기 위해 이것을 사용하고 5 때 심지어 핵심 가치를 얻을 수 있습니까? BindablePicker를 살펴 봤지만 전혀 작동하지 않는 것 같습니다. 이것에 대한 도움은 크게 감사하겠습니다.

답변

2

나는 무엇을 당신이 의미하는 것 같다 :

var pSelectedIndex = ddlPurpose.SelectedIndex; 
var selectedKey = list.Values.ElementAt(pSelectedIndex); 

내가 MVVM와 Behaviors이 특정한 경우에 익숙해하는 것이 좋습니다. 작은 예제를 작성하여 MVVM을 사용하여 어떻게 보이는지 보여주었습니다.

public class PickerKeyValueTestViewModel : INotifyPropertyChanged 
{ 
    static Dictionary<string, int> colors { get; } = new Dictionary<string, int> 
     { 
      { "Aqua", 6 }, 
      { "Red", 1 }, 
      { "Silver", 2 }, 
      { "Teal", 3 }, 
      { "White", 4 }, 
      { "Yellow", 55 } 
     }; 

    public List<string> Colors { get; } = colors.Keys.ToList(); 

    public string SelectedColor { get; set; } 

    public void OnSelectedColorChanged() 
    { 
     if (string.IsNullOrEmpty(SelectedColor)) return; 
     var selectedValue = colors[SelectedColor]; 
    } 

    // Using PropertyChanged.Fody 
    public event PropertyChangedEventHandler PropertyChanged; 
} 

<ContentPage 
    xmlns="http://xamarin.com/schemas/2014/forms" 
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
    xmlns:local="clr-namespace:PickerKeyValueTest" 
    x:Class="PickerKeyValueTest.PickerKeyValueTestPage"> 

    <ContentPage.BindingContext> 
     <local:PickerKeyValueTestViewModel /> 
    </ContentPage.BindingContext> 

    <StackLayout 
     Margin="25"> 
     <Picker 
      ItemsSource="{Binding Colors}" 
      SelectedItem="{Binding SelectedColor}"> 

     </Picker> 
    </StackLayout> 
</ContentPage> 
+0

이것은 훌륭한 예제입니다. 실제로 내가하고 싶은 것과 그것을하는 방법에 대한 기본적인 이해를주었습니다. 이 답변을 끝내려면 다른 도움이 될만한 정보가 있습니다. https://stackoverflow.com/a/45799395/7933361 – Tim

관련 문제