C# 使用MVVM显示枚举事件字符串值
我的目标是数据绑定与枚举相等的字符串C# 使用MVVM显示枚举事件字符串值,c#,wpf,data-binding,mvvm,enums,C#,Wpf,Data Binding,Mvvm,Enums,我的目标是数据绑定与枚举相等的字符串 public enum Language { Unknown=0,CSharp=1,VB=2,VisualCpp=3,FSharp=4 } public enum ProjectType { Unknown=0,ConsoleApplication=1,ClassLibrary=2 } 这是我的模型: class PLanguage { public Lang
public enum Language
{
Unknown=0,CSharp=1,VB=2,VisualCpp=3,FSharp=4
}
public enum ProjectType
{
Unknown=0,ConsoleApplication=1,ClassLibrary=2
}
这是我的模型:
class PLanguage
{
public Language EnumLanguage { get; set; }
public string ImagePath { get; set; }
public List<ProjectType> EnumTypes { get; set; }
}
类平面语言
{
公共语言枚举语言{get;set;}
公共字符串ImagePath{get;set;}
公共列表枚举类型{get;set;}
}
MyViewModel:
class PLanguageViewModel : ViewModelBase
{
public PLanguage PLanguage { get; set; }
private ObservableCollection<string> _typeCollection;
public PLanguageViewModel(PLanguage pLanguage)
{
PLanguage = pLanguage;
}
public ObservableCollection<string> TypeCollection
{
get{} //CAST PLanguage.EnumTypes FROM ENUM TO STRING
}
public string ImagePath
{
get { return PLanguage.ImagePath; }
set
{
if (PLanguage.ImagePath != value)
{
PLanguage.ImagePath = value;
RaisePropertyChanged(() => ImagePath);
}
}
}
public static String ConvertToString(Enum eEnum)
{
return Enum.GetName(eEnum.GetType(), eEnum);
}
}
class PlangGuageViewModel:ViewModelBase
{
公共规划语言规划语言{get;set;}
私人可观察收集(typeCollection);;
公共规划语言视图模型(规划语言规划语言)
{
平面语言=平面语言;
}
公共可观测集合类型集合
{
获取{}//将PLanguage.EnumTypes从枚举转换为字符串
}
公共字符串映像路径
{
获取{return PLanguage.ImagePath;}
设置
{
if(PLanguage.ImagePath!=值)
{
PLanguage.ImagePath=值;
RaisePropertyChanged(()=>ImagePath);
}
}
}
公共静态字符串ConvertToString(枚举eEnum)
{
返回Enum.GetName(eEnum.GetType(),eEnum);
}
}
如您所见,我有一个ProjectType类型的枚举列表。我想将它们转换为与枚举值相等的可观察字符串集合,以便在视图中轻松地对它们进行数据绑定。
我需要创建该集合的依赖项属性,如何才能做到这一点?您可以使用该属性获取所有值并进行数据绑定
public PLanguageViewModel(PLanguage pLanguage)
{
PLanguage = pLanguage;
_typeCollection = new ObservableCollection<string>(Enum.GetNames(typeof(ProjectType)));
...
}
我明白了,谢谢,我的ObservableCollection的依赖属性会是什么样子?@idish更新了答案。
private ProjectType _selectedItem'
public string SelectedItem
{
get
{
return ConvertEnumToString(_selectedItem);
}
set
{
_selectedItem = ConvertStringToEnum(value);
}
}
public static string ConvertEnumToString(Enum eEnum)
{
return Enum.GetName(eEnum.GetType(), eEnum);
}
public static ProjectType ConvertStringToEnum(string value)
{
return (ProjectType)Enum.Parse(typeof(ProjectType), value);
}