无法从ObservableCollection

时间:2015-07-24 12:15:58

标签: c# xaml listview windows-store-apps

我想在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));
    }

}

1 个答案:

答案 0 :(得分:0)

ORDER BY tablename.[date] 不知道如何呈现ListView中的每个QuestionViewModel。这是ListViewItem发挥作用的地方。

您忘记为每个DataTemplate定义DataTemplate。试试这个

ListViewItem