Пожалуйста, не беспокойтесь о длине вопроса, это очень простой случай, но я потратил два дня до сих пор, и я не знаю, почему не работает связывание. У меня есть окно для проведения викторины, поэтому я создал QuestionsListBox, в котором содержится список вопросов, QuestionTextBlock для отображения выбранного текста вопроса и AnswerersListBox для отображения параметров ответов. если у вопроса есть предварительно выбранный ответ, соответственно ответчикListBox должен загрузить ответы и выбрать выбранный ответ.
в коде окна я создал свойство зависимостей для загрузки вопросов экзамена:
public static DependencyProperty QuestionsProperty = DependencyProperty.Register("Questions", typeof(List<Models.Questions>), typeof(Question));
public List<Models.Question> Questions
{
get { return (List<Models.Question>)GetValue(QuestionsProperty); }
set { SetValue(QuestionsProperty, value); }
}
Модели:
public class Question
{
public short QuestionNo { get; set; }
public byte[] QuestionImage { get; set; }
public string QuestionText { get; set; }
public Answer SelectedAnswer { get; set; }
public List<Answer> Answers { get; set; }
}
public class Answer
{
public short AnswerID { get; set; }
public short AnswerPower { get; set; }
public string AnswerText { get; set; }
}
в xaml, у меня есть конфигурация как показано ниже:
<ListView x:Name="QuestionList"
ItemsSource="{Binding ElementName=Questionctl, Path=Questions}">
<ListView.ItemTemplate>
<DataTemplate DataType="{x:Type model:Question}">
<Grid>
<TextBlock Text="{Binding Question.QuestionNo}" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<TextBlock x:Name="lblText"
Text="{Binding ElementName=QuestionList, Path=SelectedItem.QuestionText}">
</TextBlock>
<ListBox x:Name="AnswersListBox"
ItemsSource="{Binding ElementName=QuestionList, Path=SelectedItem.Answers}"
SelectedItem="{Binding ElementName=QuestionList, Path=SelectedItem.SelectedAnswer, Mode=TwoWay}">
<ListBox.ItemTemplate>
<DataTemplate DataType="{x:Type model:Answer}">
<Grid>
<TextBlock Text="{Binding AnswerText}">
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
когда я загружаю вопросы и выбираю любой вопрос, все загружается правильно. текст вопроса, список ответов, за исключением случаев, когда вопрос имеет предварительно выбранный ответ, этот ответ не выбран в списке ответов. , но если я выбираю ответ, модель немедленно обновляется. если список ответов обновляется на основе привязки, то почему бы не для выбранных ответов?
Я сделал что-то не так, что помешало выбору ответа?