我想在xaml中测试ListView,所以我决定创建一个小测验(简单的数学问题,有3个答案可供选择)。所以我创建了一个问题模型,一个问题的viewmodel(包含我模型问题中的所有属性),最后是一个ViewModelClass,其中我有observableCollection视图模型问题。 当我将ListView ItemSource属性与我的ObservableCollection绑定时,我从每个项目中获得的唯一内容是Method ToString()。我不知道如何解决这个问题。 这是我的代码:
的Xaml:
<StackPanel Grid.Row="1" DataContext="{StaticResource ResourceKey=viewModel}">
<ListView ItemsSource="{Binding Questions}" >
<TextBlock Style="{StaticResource SubheaderTextBlockStyle}">
<Run Text="Question "/>
<Run Text="{Binding QuestionNumber}"/>
</TextBlock>
<TextBlock>
<Run Text="How much is: "/>
<Run Text="{Binding First}"/>
<Run Text=" * "/>
<Run Text="{Binding Second}"/>
</TextBlock>
<!-- Here should be three answers to choose -->
</ListView>
</StackPanel>
我的ViewModel问题(我称之为问题的ObservableColletion中的每个项目):
class QuestionViewModel
{
Question myQuestion;
int questionNumber;
public QuestionViewModel(Question question,int number)
{
myQuestion=question;
questionNumber = number;
}
public int First
{
get
{
return myQuestion.first;
}
}
public int Second
{
get
{
return myQuestion.second;
}
}
public int QuestionNumber
{
get
{
return questionNumber;
}
}
public int FirstAnswer
{
get
{
return myQuestion.answers[0];
}
}
public int SecondAnswer
{
get
{
return myQuestion.answers[1];
}
}
public int ThirdAnswer
{
get
{
return myQuestion.answers[2];
}
}
}
ViewModelClass:
class QuestionsViewModel
{
public ObservableCollection<QuestionViewModel> Questions{get;private set;}
public QuestionsViewModel()
{
Questions = new ObservableCollection<QuestionViewModel>();
GenerateQuestion(10,10);
}
private void GenerateQuestion(int howmuch,int range)
{
for (int i = 0; i < howmuch; i++)
Questions.Add(new QuestionViewModel(new Question(range),i+1));
}
}
答案 0 :(得分:0)
ORDER BY tablename.[date]
不知道如何呈现ListView
中的每个QuestionViewModel
。这是ListViewItem
发挥作用的地方。
您忘记为每个DataTemplate
定义DataTemplate
。试试这个
ListViewItem