我有一个绑定到集合的组合框,因此用户可以选择其中一个项目。到目前为止,非常好。
组合框的内容由项目驱动,但也由我的viewmodel中的值驱动。想象一下,我的viewmodel中的值是语言,我的绑定项目中的语言描述字典,我想显示正确的。
我应该怎么做?
答案 0 :(得分:2)
这是ViewModel存在的经典示例 - 您希望逻辑依赖于视图中的平凡状态以及主模型。
想象一下,您正在编写一个单元测试来针对此行为针对ViewModel运行。您需要ViewModel将属性映射到所选项。 ViewModel还有另一个属性,该属性根据所选项目以及您提到的ViewModel 中的其他值而有所不同。
我认为这是测试驱动的ViewModel设计方法 - 如果你不能编写单元测试来评估它那么你就没有把状态和发布的接口混合在一起
所以,是的,ViewModel可以解决问题,如果你将所有状态都推入其中,你就可以在ViewModel中进行统一。
答案 1 :(得分:1)
在Item类型的viewmodel中创建一个可观察的集合。将viewmodel的itemsource绑定到此可观察集合。
public class Item
{
public String description {get;set;}
public String language {get;set;}
public override ToString()
{
return description;
}
}
所选项目也将绑定到Item类型的属性。
ToString的覆盖显示描述。
所选项目属性将引用所选对象属性,您可以从中获取语言。