将ListBox(或Telerik RadListPicker)绑定到枚举

将ListBox(或Telerik RadListPicker)绑定到枚举,telerik,mvvm-light,windows-phone-7,Telerik,Mvvm Light,Windows Phone 7,我有一个枚举: 公共枚举度量单位 { 米, 公里, 码, 英里, 时间 } 我想把它绑定到一个列表框(实际上是一个Telerik RadListPicker,但它的工作原理是一样的): 我的视图模型: // ///该属性的名称。 /// public const string WorkUnitOfMeasurePropertyName=“WorkUnitOfMeasure”; 私人可观测采集(计量单位);; /// ///获取WorkUnitOfMeasure属性。 ///更改该属性的

我有一个枚举:

公共枚举度量单位
{
米,
公里,
码,
英里,
时间
}
我想把它绑定到一个列表框(实际上是一个Telerik RadListPicker,但它的工作原理是一样的):


我的视图模型:

//
///该属性的名称。
/// 
public const string WorkUnitOfMeasurePropertyName=“WorkUnitOfMeasure”;
私人可观测采集(计量单位);;
/// 
///获取WorkUnitOfMeasure属性。
///更改该属性的值将引发PropertyChanged事件。
///此属性的值在更改时由Messenger的默认实例广播。
/// 
公共可观测采集测量单位
{
得到
{
返回测量的工作单位;
}
设置
{
if(_workUnitOfMeasure==值)
{
返回;
}
var oldValue=_测量的工作单位;
_测量的工作单位=值;
RaisePropertyChanged(度量属性名称的工作单位);
}
}
在我的构造器中,我尝试过类似这样的变体:

WorkUnitOfMeasure=新的ObservableCollection();

我似乎无法将列表框绑定到枚举。我知道我遗漏了一些简单的东西,但我想不出来。

我认为这应该是一个问题

ObservableCollection<UnitOfMeasure>
observedcollection
不是


observateCollection如果要将单个枚举项绑定到列表框:

以下代码可能会帮助您:

 List<string> newList = new List<string>();
        for (int i = 0; i <= (int)UnitOfMeasure.Time; i++)
            newList.Add(Enum.GetName(typeof(UnitOfMeasure), i));
        SampleList.ItemsSource = newList;
List newList=newList();

对于(int i=0;i heck是
Enum
?不确定WP7是否有ObjectDataSource,但如果是这样,这是@JeffCren的重复:您是绑定单个枚举还是UnitOfMeasure枚举列表?我正在尝试将枚举列表绑定到下拉列表。@Will:WP7没有ObjectDataSource。我在发布我的问题之前看到了这个问题。我没有得到错误或者,但是列表框没有绑定-它是空的。我注意到在viewmodel构造函数中,当我调用WorkUnitOfMeasure=newObservableCollection()时;WorkUnitOfMeasure上的计数为0,因此未正确初始化。它实际上可能不是绑定,而是初始化。@JeffCren:您知道必须将枚举的不同值添加到集合中,对吗?它不像集合本身填充。
 List<string> newList = new List<string>();
        for (int i = 0; i <= (int)UnitOfMeasure.Time; i++)
            newList.Add(Enum.GetName(typeof(UnitOfMeasure), i));
        SampleList.ItemsSource = newList;