Как зафиксировать значение элемента списка

Я пытаюсь зафиксировать значение выбранного элемента в списке и сохранить это значение в своей базе данных. Моя цель - когда я выбираю «Мужской» (или «Женский»), «Мужской» (или «Женский») будет добавлен в поле «Пол» [столбец] в базе данных, но я не знаю, как это сделать.

Моя база данных:

[Table]
    public class Member : INotifyPropertyChanged, INotifyPropertyChanging
    {
        // Define ID: private field, public property, and database column.
        private int _ID;

        [Column(IsPrimaryKey = true, IsDbGenerated = true, DbType = "INT NOT NULL Identity", CanBeNull = false, AutoSync = AutoSync.OnInsert)]
        public int ID
        {
            get { return _ID; }
            set
            {
                if (_ID != value)
                {
                    NotifyPropertyChanging("ID");
                    _ID = value;
                    NotifyPropertyChanged("ID");
                }
            }
        }

        private string _FullName;

        [Column]
        public string FullName
        {
            get { return _FullName; }
            set
            {
                if (_FullName != value)
                {
                    NotifyPropertyChanging("FullName");
                    _FullName = value;
                    NotifyPropertyChanged("FullName");
                }
            }
        }



        private string _Address;
        [Column]
        public string Address
        {
            get { return _Address; }
            set
            {
                if (_Address != value)
                {
                    NotifyPropertyChanging("Address");
                    _Address = value;
                    NotifyPropertyChanged("Address");
                }
            }
        }

        private string _Gender;

        [Column]
        public string Gender
        {
            get { return _Gender; }
            set
            {
                if (_Gender != value)
                {
                    NotifyPropertyChanging("Gender");
                    _FullName = value;
                    NotifyPropertyChanged("Gender");
                }
            }
        }
        #region INotifyPropertyChanged Members

        public event PropertyChangedEventHandler PropertyChanged;

        // Used to notify that a property changed
        private void NotifyPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        #endregion
        #region INotifyPropertyChanging Members

        public event PropertyChangingEventHandler PropertyChanging;

        // Used to notify that a property is about to change
        private void NotifyPropertyChanging(string propertyName)
        {
            if (PropertyChanging != null)
            {
                PropertyChanging(this, new PropertyChangingEventArgs(propertyName));
            }
        }

        #endregion

    }
    public class GenderPicker
    {
        public string sex
        {
            get;
            set;
        }

    }

Мой список ListPicker:

public Add()
    {
        InitializeComponent();
        this.DataContext = App.MainViewModel;
        List<GenderPicker> picker = new List<GenderPicker>();
        picker.Add(new GenderPicker() { sex = "Male" });
        picker.Add(new GenderPicker() { sex = "FeMale" });
        this.ListPicker.ItemsSource = picker;


    }

Моя кнопка добавления: я не знаю, что можно заполнить ???????????????

Член — это таблица. Полное имя столбца | Адрес | Пол

private void Add_Click(object sender, EventArgs e)
    {
        if ((addaddress.Text.Length > 0) && (addfullname.Text.Length > 0))
        {
            Member newInfo = new Member
            {
                FullName = addfullname.Text,
                Address = addaddress.Text,
                Gender = ????????????????

            };
            App.MainViewModel.Addinfo(newInfo);
        }
    }

И мой выбор изменился в LIstpicker:

  private void ListPicker_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        var samplesex =(GenderPicker)ListPicker.SelectedItem;
        var selectedsex = (samplesex.sex).ToString();

    }

person user3123487    schedule 20.12.2013    source источник
comment
К какой базе данных вы пытаетесь подключиться? Вы исследовали подключение конкретной базы данных к .net? Дополнительная информация доступна MSDN, скорее всего, в пространстве имен System.Data.   -  person weeksdev    schedule 20.12.2013
comment
Я добавил свою базу данных в вопрос...   -  person user3123487    schedule 20.12.2013


Ответы (3)


Ты пробовал? Найдено на stackoverflow.com

(ListPicker.SelectedItem as GenderPicker).sex.ToString()

или в вашем примере:

private void Add_Click(object sender, EventArgs e)
{
    if ((addaddress.Text.Length > 0) && (addfullname.Text.Length > 0))
    {
        Member newInfo = new Member
        {
            FullName = addfullname.Text,
            Address = addaddress.Text,
            Gender = (ListPicker.SelectedItem as GenderPicker).sex.ToString()

        };
        App.MainViewModel.Addinfo(newInfo);
    }
}

вы можете/должны сделать свойство иметь значение по умолчанию, чтобы вы не получали исключений NullReference, если в ListPicker выбрано значение NULL.

person Raged    schedule 20.12.2013

Этот ответ касается структуры данных.

Почему вы используете класс «GenderPicker» для выбора пола? Есть ли у классов GenderPicker функция?

Почему бы не использовать перечислитель?

public enum Gender: int
{
    Male=0,
    Female=1,
    Pat=-1
}

Это позволит вам просто сохранить столбец int в вашей базе данных. Также это легко преобразовать обратно в пол.

int GenderInt = Gender.Pat; // -1
Gender whatIsPat = (Gender)GenderInt; // Gender.Pat
person Raged    schedule 20.12.2013

Вы устали gender = picker.SelectedValue.ToString();

Здесь представлена ​​дополнительная информация об использовании элемента управления ListBox в Windows Phone.

person Justin Adkins    schedule 20.12.2013