Не удается получить SelectedItem или SelectedIndex поля со списком - PullRequest
0 голосов
/ 01 апреля 2012

Я начинаю карабкаться по стенам здесь.Я заполнил поле со списком элементов, и я пытаюсь выяснить, какие из них были выбраны.Я также пытался установить в поле со списком автоматический выбор 0-го элемента в списке.Но это тоже не сработает, я получаю ошибку пути выражения связывания как в GroupIndex, так и в SelectedGroup.Однако я не могу понять, в чем проблема.

Поле со списком Xaml:

<ComboBox     
Name="GroupComboBox"
SelectedIndex="{Binding Path=GroupIndex}"
SelectedItem="{Binding Path=SelectedGroup}"
DisplayMemberPath="Name"
SelectedValuePath ="Name"
ItemsSource="{Binding Path=Groups}"
Height="38"
HorizontalAlignment="Left"
Margin="159,115,0,0"
VerticalAlignment="Top"
Width="185"
FontSize="24" Text="Select a Group" IsEditable="False" IsReadOnly="False" />

Вот код для заполнения поля со списком.

    void webService_GroupListChanged(string response)
    {
        JavaScriptSerializer serializer = new JavaScriptSerializer();

        IList<JSONGroup> listOfGroups = new List<JSONGroup>();

        listOfGroups = serializer.Deserialize<List<JSONGroup>>(response);

        Application.Current.Dispatcher.BeginInvoke((Action)(() =>
        {
            Groups = new ObservableCollection<Group>();

            foreach(JSONGroup group in listOfGroups)
            {
                Groups.Add(new Group(group.name, group.id));
            }

        }));
    }

    private int groupIndex;
    private int GroupIndex
    {
        get { return this.groupIndex; }
        set
        {
            if (this.groupIndex != value)
            {
                this.groupIndex = value;
                this.OnPropertyChanged("GroupIndex");
            }
        }
    }


    private Group selectedGroup;
    private Group SelectedGroup
    {
        get { return this.selectedGroup; }
        set
        {
            if (this.selectedGroup != value)
            {
                this.selectedGroup = value;
                this.OnPropertyChanged("SelectedGroup");
            }
        }
    }


    private ObservableCollection<Group> groups;
    public ObservableCollection<Group> Groups
    {
        get { return this.groups; }
        set
        {
            if (this.groups != value)
            {
                this.groups = value;
                this.OnPropertyChanged("Groups");
            }
        }
    }

1 Ответ

2 голосов
/ 01 апреля 2012
  1. Для использования в привязке ваши свойства GroupIndex и SelectedGroup должны быть public.
  2. Не устанавливать SelectedItem и SelectedIndex одновременно.
  3. Если вы предпочитаете установить SelectedItem, этот точный элемент (SelectedGroup) должен содержаться в Groups.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...