WPF 枚举类型与ComboBox绑定

WPF 枚举类型与ComboBox绑定

通过枚举类型建立集合

很多时候,我们需要直接获取枚举值的值,将其绑定到ComboBox之类的控件中。因为我们知道,ComboBox的ItemsSource是一个集合,因此我们需要将枚举值变成一个集合,然后绑定到ComboBox中,可以通过绑定SelectedItem/SelectedValue实现获取选中元素。

枚举定义

 public enum AzimuthMapType
    {
        None=0,
        Launch=1,
        Receiving=2,
        TwoWay=3,
        EIRP=4,
    }

枚举类型、键值对与ComboBox绑定应用

View Model中通过枚举类型获取键值对集合。

  		public ControllerViewModel()
        { 			
			 var source = new Dictionary();

            foreach (var item in Enum.GetValues(typeof(AzimuthMapType)))
            {
				source.Add((int)(AzimuthMapType)Enum.Parse(typeof(AzimuthMapType), item.ToString()), item.ToString());
            }
            AzimuthMapTypeSources=source;
  		}

		public IEnumerable> AzimuthMapTypeSources
        {
            get;
            private set;
        }

		public int selectedAmtIndex;

		public int SelectedAmtIndex
        {
            get{return selectedAmtIndex;}
            set{
                selectedAmtIndex=value;
                OnPropertyChanged();
            }
        }

XAML文件中绑定


枚举类型、普通集合与ComboBox绑定应用

模型定义


    public class AzimuthMap : NotifyPropertyChanged
    {
        public string Name { get { return AzimuthMapType.ToString(); } }

        private AzimuthMapType azimuthMapType;

        public AzimuthMapType AzimuthMapType
        {
            get { return azimuthMapType; }
            set { azimuthMapType = value; RaisePropertyChanged("Name"); }
        }

    }

View Model集合获取

 		public ControllerViewModel()
        {
            AzimuthMaps = new ObservableCollection();

            foreach (var item in Enum.GetValues(typeof(AzimuthMapType)))
            {
                AzimuthMaps.Add(new AzimuthMap() { AzimuthMapType = (AzimuthMapType)Enum.Parse(typeof(AzimuthMapType), item.ToString()) });

            } 		

		private ObservableCollection azimuthMaps;

        public ObservableCollection AzimuthMaps
        {
            get
            {
                return azimuthMaps;
            }
            set
            {
                azimuthMaps = value;
                OnPropertyChanged();
            }
        }
            
        private AzimuthMap selectedAzimuthMap;

        public AzimuthMap SelectedAzimuthMap
        {
            get { return selectedAzimuthMap; }
            set { selectedAzimuthMap = value; OnPropertyChanged(); }
        }

XAML文件中绑定



在XAML中直接绑定枚举值

在XAML中加入枚举类型


    
        
    

    
            
                
                    
                
            
    

在ComboBox中使用


在View Model中只需要声明SelectedAzimuthMapType属性即可。


积跬步以至千里:) (:一阵没来由的风

你可能感兴趣的:(C#,WPF,WPF,ComboBox,绑定,MVVM,枚举)