【问题标题】:Change / Swap Bound Object on XAML page?在 XAML 页面上更改/交换绑定对象?
【发布时间】:2015-07-04 12:33:58
【问题描述】:

背景:

为了学习 WP 8.1 开发(非 SL),我正在构建一个针对儿童的测验应用程序。这是一个水果猜谜游戏。

它应该如何工作:

向用户展示了一张水果图片以及三个单词。其中一个词是水果的名称。如果为水果选择了正确的单词,那么用户会得到一个分数,并且还会显示下一个带有单词选项的水果。

有什么问题:

我是 WP 8.1 开发的新手,当用户选择正确答案时,我不确定如何在 XAML 页面上交换绑定的QuestionVM.cs。这是我将我目前拥有的图表放在一起的图表:

当用户选择正确答案时,整个 QuestionVM 需要替换。

我该怎么做?

有没有办法做到这一点?还是我必须更改QuestionVM.cs 上的实际属性,而不是交换整个QuestionVM.cs 实例?

【问题讨论】:

  • 我想知道您是否想在正确输入后给用户下一个任务?
  • 我不确定你的意思?最终,底部会出现一个栏,告诉用户他们有多少积分。是不是更清楚了?
  • 抱歉,您的错误是什么?
  • 我的问题没有错误。我只需要知道如何交换附加到 XAML 的 ViewModel 实例。
  • 哦喜欢动态 XAML 好像每个页面都有一个新的 XAML?

标签: c# xaml binding windows-phone-8.1


【解决方案1】:
  1. 在您的 QuestionVM 上创建一个MainVM。这将是您主屏幕的后台存储。
  2. MainVM 中创建一个私人List<QuestionVM>。这会将所有问题对象存储在其中。
  3. 创建QuestionVM 类型的只读CurrentQuestion 属性。这将指向当前的问题对象。
  4. 为当前问题保留一个私有整数索引。
  5. MainVM 中创建MoveNextMovePrevious 命令(RelayCommand 类型)。在选择正确答案时调用这些(或通过任何你需要的显式按钮)。
  6. 这些命令将简单地增加/减少当前索引,然后在CurrentQuestion 属性上调用RaisePropertyChanged。这将更新您的用户界面。

注意:我假设您使用的是 MVVM Light 或其他一些 MVVM 框架,并且您的 VM 类继承自 ViewModelBaseObservableObject

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多