Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight 我的ViewModel中可以有ValueConverter吗?_Silverlight_Silverlight 3.0 - Fatal编程技术网

Silverlight 我的ViewModel中可以有ValueConverter吗?

Silverlight 我的ViewModel中可以有ValueConverter吗?,silverlight,silverlight-3.0,Silverlight,Silverlight 3.0,我有一个绑定到集合的组合框,因此用户可以选择其中一个项目。到目前为止,一切顺利 组合框的内容由项目驱动,但也由我的viewmodel中的值驱动。假设我的viewmodel中的值是语言,我的绑定项中有语言描述词典,我想显示正确的描述 我应该怎么做呢?这是一个经典的例子,说明了为什么ViewModel存在——您希望拥有依赖于视图中的平凡状态以及主模型的逻辑 假设您正在编写一个单元测试,以针对这种行为针对ViewModel运行。您需要ViewModel具有映射到选定项的属性。ViewModel还具有另

我有一个绑定到集合的组合框,因此用户可以选择其中一个项目。到目前为止,一切顺利

组合框的内容由项目驱动,但也由我的viewmodel中的值驱动。假设我的viewmodel中的值是语言,我的绑定项中有语言描述词典,我想显示正确的描述


我应该怎么做呢?

这是一个经典的例子,说明了为什么ViewModel存在——您希望拥有依赖于视图中的平凡状态以及主模型的逻辑

假设您正在编写一个单元测试,以针对这种行为针对ViewModel运行。您需要ViewModel具有映射到选定项的属性。ViewModel还具有另一个属性,该属性根据此选定项以及您提到的ViewModel中的其他值而变化

我认为这是ViewModel设计的测试驱动方法——如果您不能编写单元测试来评估它,那么您就没有正确地混合使用状态和发布的接口


因此,是的,ViewModel可以解决问题,如果您将所有状态下推到其中,您可以在ViewModel中进行统一。

在您的ViewModel中创建一个类型为Item的可观察集合。将viewmodel的itemsource绑定到此可观察集合

public class Item
{
public String description {get;set;}
public String language {get;set;}
public override ToString()
{
      return description;
}
}
所选项目也将绑定到item类型的属性

ToString的覆盖将显示描述


Selected item属性将引用Selected object属性,您可以从中获取语言。

Andy,这是我最满意的解决方案,但我不知道如何才能最好地做到这一点。我是否必须为combobox实现一个要绑定的自定义类型,并且当我收到更改通知时,我应该将该值推回到模型?您是否希望combo的整个描述集根据其他值进行更改?抱歉,Andy,我错过了您的评论。是的,我需要更改整个描述集。我可以想出几种方法,但没有一种特别好:)