অ্যাডাম মার্কোভিটসের উত্তর ছাড়াও, এখানে একটি সাধারণ উদ্দেশ্য উপায় (তুলনামূলকভাবে) কেবল ItemSourceএকটি কম্বোবক্সের মানগুলি সেট করা হয় enumsযখন ব্যবহারকারীর জন্য 'বর্ণনা' বৈশিষ্ট্যটি দেখানো হয়। (আপনি ভাবেন যে সবাই এটি করতে চাইবে যাতে এটি একটি। নেট ও লাইনার হয়ে যায়, তবে এটি ঠিক হয় নি, এবং এটি আমি খুঁজে পেয়েছি এটি সবচেয়ে মার্জিত উপায়)।
প্রথমে যে কোনও এনাম মানকে কম্বোবক্স আইটেমে রূপান্তর করার জন্য এই সাধারণ ক্লাসটি তৈরি করুন:
public class ComboEnumItem {
public string Text { get; set; }
public object Value { get; set; }
public ComboEnumItem(Enum originalEnum)
{
this.Value = originalEnum;
this.Text = this.ToString();
}
public string ToString()
{
FieldInfo field = Value.GetType().GetField(Value.ToString());
DescriptionAttribute attribute = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) as DescriptionAttribute;
return attribute == null ? Value.ToString() : attribute.Description;
}
}
দ্বিতীয়ত আপনার OnLoadইভেন্ট হ্যান্ডলারটিতে, আপনার টাইপের ComboEnumItemsপ্রত্যেকটির উপর ভিত্তি করে একটি তালিকা তৈরি করতে আপনাকে আপনার কম্বো বাক্সের উত্স সেট করতে হবে । লিনকের সাথে এটি অর্জন করা যেতে পারে। তারপরে ঠিক সেট করুন :EnumEnumDisplayMemberPath
void OnLoad(object sender, RoutedEventArgs e)
{
comboBoxUserReadable.ItemsSource = Enum.GetValues(typeof(EMyEnum))
.Cast<EMyEnum>()
.Select(v => new ComboEnumItem(v))
.ToList();
comboBoxUserReadable.DisplayMemberPath = "Text";
comboBoxUserReadable.SelectedValuePath= "Value";
}
এখন ব্যবহারকারী আপনার ব্যবহারকারীর বন্ধুত্বপূর্ণের একটি তালিকা থেকে Descriptionsনির্বাচন করবেন, তবে তারা enumযা নির্বাচন করবেন তার মানটি আপনি কোডটিতে ব্যবহার করতে পারবেন। কোডটিতে ব্যবহারকারীর নির্বাচন অ্যাক্সেস করতে comboBoxUserReadable.SelectedItemহবে ComboEnumItemএবং comboBoxUserReadable.SelectedValueহবে EMyEnum।