更改/交换 XAML 页面上的绑定对象?
Change / Swap Bound Object on XAML page?
背景:
为了学习 WP 8.1 开发(非 SL),我正在构建一个针对儿童的测验应用程序。这是一款水果猜谜游戏。
它应该如何工作:
用户看到一张水果图片和三个词。其中一个词是水果的名称。如果选择了正确的水果词,则用户会得到一分,并且还会显示下一个带有词选项的水果。
问题是什么:
我是 WP 8.1 开发的新手,我不太确定当用户选择正确答案时如何在 XAML 页面上交换绑定 QuestionVM.cs
。这是我将我目前拥有的图表放在一起的图表:
当用户选择正确答案时,整个 QuestionVM 需要更换。
我该怎么做?
有没有办法做到这一点?或者我必须更改 QuestionVM.cs
上的 实际属性 而不是交换整个 QuestionVM.cs
实例?
- 在您的 QuestionVM 之上创建一个
MainVM
。这将是您主屏幕的后台商店。
- 在
MainVM
中创建私有 List<QuestionVM>
。这将在其中存储所有问题对象。
- 创建
QuestionVM
类型的只读 CurrentQuestion
属性。这将指向当前的问题对象。
- 为当前问题保留一个私有整数索引。
- 在
MainVM
中创建 MoveNext
、MovePrevious
命令(RelayCommand
类型)。在选择正确答案时调用它们(或通过您需要的明确按钮)。
- 这些命令将简单地 increment/decrement 当前索引,然后在
CurrentQuestion
属性 上调用 RaisePropertyChanged
。这将更新您的 UI.
注意:我假设您正在使用 MVVM Light 或其他一些 MVVM 框架,并且您的 VM 类 继承自 ViewModelBase
或 ObservableObject
。
背景:
为了学习 WP 8.1 开发(非 SL),我正在构建一个针对儿童的测验应用程序。这是一款水果猜谜游戏。
它应该如何工作:
用户看到一张水果图片和三个词。其中一个词是水果的名称。如果选择了正确的水果词,则用户会得到一分,并且还会显示下一个带有词选项的水果。
问题是什么:
我是 WP 8.1 开发的新手,我不太确定当用户选择正确答案时如何在 XAML 页面上交换绑定 QuestionVM.cs
。这是我将我目前拥有的图表放在一起的图表:
当用户选择正确答案时,整个 QuestionVM 需要更换。
我该怎么做?
有没有办法做到这一点?或者我必须更改 QuestionVM.cs
上的 实际属性 而不是交换整个 QuestionVM.cs
实例?
- 在您的 QuestionVM 之上创建一个
MainVM
。这将是您主屏幕的后台商店。 - 在
MainVM
中创建私有List<QuestionVM>
。这将在其中存储所有问题对象。 - 创建
QuestionVM
类型的只读CurrentQuestion
属性。这将指向当前的问题对象。 - 为当前问题保留一个私有整数索引。
- 在
MainVM
中创建MoveNext
、MovePrevious
命令(RelayCommand
类型)。在选择正确答案时调用它们(或通过您需要的明确按钮)。 - 这些命令将简单地 increment/decrement 当前索引,然后在
CurrentQuestion
属性 上调用RaisePropertyChanged
。这将更新您的 UI.
注意:我假设您正在使用 MVVM Light 或其他一些 MVVM 框架,并且您的 VM 类 继承自 ViewModelBase
或 ObservableObject
。