অ্যাডাম মার্কোভিটসের উত্তর ছাড়াও, এখানে একটি সাধারণ উদ্দেশ্য উপায় (তুলনামূলকভাবে) কেবল 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
প্রত্যেকটির উপর ভিত্তি করে একটি তালিকা তৈরি করতে আপনাকে আপনার কম্বো বাক্সের উত্স সেট করতে হবে । লিনকের সাথে এটি অর্জন করা যেতে পারে। তারপরে ঠিক সেট করুন :Enum
Enum
DisplayMemberPath
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
।