2016-09-20 9 views

답변

0

이 샘플은 단지 내부적으로 저장소를 사용하기 때문에 실제로는 영역 질문이 아닙니다. 코드의 대부분은 일반적인 C# Xamarin 코드입니다.

빠른 요약으로, 당신은 PersonPage.xaml

  • 추가로, 해당 속성에 매핑 된 선택기를 추가 새 속성
  • 를로드 할 수 AddEditPersonViewModel.cs
  • 업데이트 AddEditPersonViewModel.Init에 속성을 추가

    1. 필요 해당 값을 저장하는 Person.cs의 일치 속성
    2. 업데이트 IDBService.SavePerson을 전달하면됩니다. 부동산 승
    3. 업데이트 RealmDBService.SavePerson는 구체적으로 영역

    에 다시 새 속성을 복사하려면 :

    // step 1 & 2 
    public class AddEditPersonViewModel : INotifyPropertyChanged 
    { 
    ... 
    // added property 
        private int superPower; 
    
        public int SuperPower { 
         get { 
          return superPower; 
         } 
         set { 
          superPower = value; 
          PropertyChanged(this, new PropertyChangedEventArgs("SuperPower")); 
         } 
        } 
    ... 
        public void Init (string id) 
        { 
        ... 
         SuperPower = Model.SuperPower; 
    
    
    
    // step 3 - in PersonPage.xaml 
         Text="{Binding LastName}" /> 
         <Picker SelectedIndex="{Binding SuperPower}"> 
         <Picker.Items> 
          <x:String>Flight</x:String> 
          <x:String>Super Strength</x:String> 
          <x:String>Ordinariness</x:String> 
         </Picker.Items> 
         </Picker> 
        </StackLayout> 
    
    
    // step 4 - in Person.cs 
        public class Person : RealmObject 
        { 
        ... 
         public int SuperPower { 
          get; 
          set; 
         } 
    
    
    // step 5 in IDBService.cs 
        public interface IDBService 
        { 
         bool SavePerson (string id, string firstName, string lastName, int SuperPower); 
    
    
    // step 6 in RealmDBService.cs 
        public class RealmDBService : IDBService 
        { 
        ... 
         public bool SavePerson (string id, string firstName, string lastName, int superPower) 
        { 
         try { 
          RealmInstance.Write (() => { 
           var person = RealmInstance.CreateObject<Person>(); 
           person.ID = id; 
           person.FirstName = firstName; 
           person.LastName = lastName; 
           person.SuperPower = superPower; 
          }); 
    
  • +0

    대단히 감사합니다! 왜 피커가 int인지 :/ – BaS

    +0

    피커는 목록 선택 컨트롤이므로 인덱스가 int입니다. 표시되는 레이블은 지역화됨에 따라 변경 될 수 있지만 값은 동일하게 유지됩니다. –

    +0

    고맙습니다! 나는 문자열로 설정하고 잘 작동합니다! – BaS