Выбранное значение поля со списком не является обязательным - PullRequest
0 голосов
/ 05 января 2012

Хорошо, я потратил часы, пытаясь понять это, и я не могу. У меня есть поле со списком ниже, которое правильно привязано к моей коллекции данных.

<ComboBox Name="cbx" Width="250" Height="25"
   Visibility="{Binding Path=IsComboBox,Converter={StaticResource BoolConverter}}"
   ItemsSource="{Binding Path=Answers}"
   SelectedValuePath="AnswerId"
   SelectedItem="{Binding Path=SelectedAnswer, Mode=TwoWay}" 
   DisplayMemberPath="Answer"/>

Выбранный элемент, однако, не заполняет верхнюю часть моего свойства Выбранный ответ. Я поместил текстовое поле в форму и привязал его к SelectedAnswer.Answer, и это правильно связывает с ответом. По какой-то причине мое поле со списком не будет привязывать выбранный ответ

  • Я прочитал кое-что о макете свойства поля со списком и попытался изменить его, а также прошел через getter и setter свойства, чтобы убедиться, что оно не очищается (что не связано с привязкой к текстовому полю)

Пожалуйста, помогите с этим.

SurveyAnswer:

public class SurveyAnswer : INotifyPropertyChanged
{
    private Guid answerId;
    public Guid AnswerId
    {
        get { return answerId; }
        set { 
            answerId = value;
            NotifyPropertyChanged("AnswerId");
        }
    }

    private string answer;
    public string Answer
    {
        get { return answer; }
        set { 
            answer = value;
            NotifyPropertyChanged("Answer");
        }
    }

    public Guid SurveyLineID { get; set; }

    private bool isSelected;
    public bool IsSelected
    {
        get { return isSelected; }
        set { 
            isSelected = value;
            NotifyPropertyChanged("IsSelected");
        }
    }


    #region NotifyPropertyChanged

    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged(String info)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(info));
        }
    }

    #endregion        

}

1 Ответ

1 голос
/ 05 января 2012

Я думаю, вам нужно изменить SelectedItem на SelectedValue.Иногда этот порядок параметров также имеет значение.

 <ComboBox Name="cbx" Width="250" Height="25"                                                          
   Visibility="{Binding Path=IsComboBox,Converter={StaticResource BoolConverter}}" 
   ItemsSource="{Binding Path=Answers}"         
   SelectedValue="{Binding Path=SelectedAnswer, Mode=TwoWay}" 
   DisplayMemberPath="Answer" SelectedValuePath="AnswerId"/>

Это полезно: http://johnpapa.net/binding-to-silverlight-combobox-and-using-selectedvalue-selectedvaluepath-and-displaymemberpath

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...