2013-02-23 18 views
5

पर enum मान जोड़ना मेरे पास सी # और डब्ल्यूपीएफ के बारे में पूछने के लिए एक बहुत ही सरल सवाल है। मेरे प्रश्न मेरा यह प्रयास के बाद का पालन करेंगे:एक सरल combobox

private void Window_Loaded(object sender, RoutedEventArgs e) 
     { 
      foreach (var item in Races) 
      { 
       cbRace.Items.Add(item); 
      } 
     } 
    } 

    enum Races 
    { 
     Human=1, 
     Dwarf, 
     Elf, 
     Orc, 
     Goblin, 
     Vampire, 
     Centaur 
    } 

ठीक है तो, मेरे सवाल यह है कि मैं कॉम्बो बॉक्स में मान (। उदाहरण के लिए: मानव, बौना, योगिनी ....) जोड़ देगा है: cbRace? खेद है कि मैं सी # के लिए नया हूं इसलिए अगर कोई मेरी मदद कर सकता है तो मैं इसकी सराहना करता हूं :), अग्रिम धन्यवाद।

+0

आपके उपरोक्त कोड के लिए काम नहीं कर रहा है? – mihirj

उत्तर

16
private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     foreach (var item in Enum.GetValues(typeof(Races))) 
     { 
      cbRace.Items.Add(item); 
     } 
    } 
    enum Races 
    { 
     Human = 1, 
     Dwarf, 
     Elf, 
     Orc, 
     Goblin, 
     Vampire, 
     Centaur 
    } 
+0

Enum.GetValues ​​आपकी टाइप एनम सूची वापस कर देगा। –

+0

धन्यवाद जॉन बहुत धन्यवाद! यह मेरे लिए काम किया, धन्यवाद :) – user2061405

14

आप इस तरह कुछ करने के लिए सक्षम होना चाहिए:

cbRace.DataSource = Enum.GetValues(typeof(Races)); 

चेकआउट की स्थापना और enum मूल्यों को पुन: प्राप्त करने पर अधिक जानकारी के लिए this जवाब।

+0

नोट: डब्ल्यूपीएफ में यह 'आइटमसोर्स 'संपत्ति है। – LPL

+0

यह सबसे अच्छा जवाब है !! –

0

उपयोग इस

cbRace.Datasource = Enum.GetValues(typeof(Races)); 

बता गया करने के लिए अपने enum DataBind और फिर अपने बता गया की selectedValue और selectedText गुणों का उपयोग नाम और मान नहीं निकाला जा करने के लिए;

5

यह शायद ComboBox आइटम स्थापित करने के लिए सबसे आसान तरीका होगा:

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    cbRace.ItemsSource = Enum.GetValues(typeof(Races)); 
    cbRace.SelectedIndex = 0; 
} 

यह enum मूल्यों पर पाश करने के लिए आवश्यक नहीं है, बस ItemsSource गुण सेट।

2

यह एक पसंदीदा समाधान के रूप में क्लेमेंस पहले से ही आपको लगता है कि दिया है नहीं है, लेकिन यदि आप XAML में जोड़ना चाहते थे सीधे आप भी

<ComboBox> 
    <urCode:Races>Human</urCode:Races> 
    <urCode:Races>Dwarf</urCode:Races> 
    <urCode:Races>Elf</urCode:Races> 
</ComboBox> 

कर सकता है आप भी एक IValueConverter implment सकता है कि जब एक के लिए बाध्य प्रकार, Enum.GetValues ​​

0
cmbUserType.Items.AddRange(core.Global.ToObjectArray(Enum.GetValues(typeof(STATUS)))); 
public enum STATUS { INACTIVE, ACTIVE } 
+0

मैं आपको अपने उत्तर के चारों ओर कुछ और संदर्भ जोड़ने के लिए अनुरोध करता हूं। कोड-केवल या लिंक-केवल उत्तरों को समझना मुश्किल होता है। यदि आप अपनी पोस्ट में अधिक जानकारी जोड़ सकते हैं तो यह पूछने वाले और भावी पाठकों दोनों की मदद करेगा। – RBT

1

सबसे छोटा रास्ता रिटर्न में बता गया करने के लिए Enum मान जोड़ने के लिए सी #

class User{ 

public enum TYPE { EMPLOYEE, DOCTOR, ADMIN }; 

} 

// इस वर्ग को फॉर्म कन्स्ट्रक्टर

cmbUserType.Items.AddRange(Enum.GetNames(typeof(User.TYPE)));