আপনি গ্রহণযোগ্য উত্তর আরও সরল করতে পারেন। Xaml এ স্ট্রিং হিসাবে এনামগুলি টাইপ করার পরিবর্তে এবং আপনার কনভার্টারে প্রয়োজনের চেয়ে আরও বেশি কাজ করার পরিবর্তে আপনি স্ট্রিং উপস্থাপনের পরিবর্তে এনামের মানগুলিতে স্পষ্টভাবে পাস করতে পারেন এবং ক্রিমসনএক্স মন্তব্য করেছেন, রানটাইমের পরিবর্তে সংকলনের সময় ত্রুটিগুলি ছুঁড়ে ফেলা হয়:
রূপান্তরকারীপ্যারামিটার = {x: স্থিতিশীল স্থানীয়: আপনারইউনটাইম.ইমনাম 1
<StackPanel>
<StackPanel.Resources>
<local:ComparisonConverter x:Key="ComparisonConverter" />
</StackPanel.Resources>
<RadioButton IsChecked="{Binding Path=YourEnumProperty, Converter={StaticResource ComparisonConverter}, ConverterParameter={x:Static local:YourEnumType.Enum1}}" />
<RadioButton IsChecked="{Binding Path=YourEnumProperty, Converter={StaticResource ComparisonConverter}, ConverterParameter={x:Static local:YourEnumType.Enum2}}" />
</StackPanel>
তারপরে রূপান্তরকারীটিকে সহজ করুন:
public class ComparisonConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value?.Equals(parameter);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value?.Equals(true) == true ? parameter : Binding.DoNothing;
}
}
সম্পাদনা (16 ডিসেম্বর '10):
বাঁধন ফিরিয়ে দেওয়ার পরামর্শ দেওয়ার জন্য আননকে ধন্যবাদ। নির্ভরতাপ্রোপার্টি.অনসেটভ্যালু ছাড়া কিছু না।
দ্রষ্টব্য - একই পাত্রে রেডিওব্যাটনের একাধিক গোষ্ঠী (ফেব্রুয়ারী 17 '11):
এক্সএএমএল-তে, যদি রেডিও বোতামগুলি একই প্যারেন্ট পাত্রে ভাগ করে, তবে একটি নির্বাচন করলে সেই ধারকটির মধ্যে থাকা সমস্ত অন্যান্য ডি-সিলেক্ট হবে (এমনকি তারা অন্য কোনও সম্পত্তিতে আবদ্ধ থাকলেও)। সুতরাং আপনার রেডিওবটনগুলি স্ট্যাক প্যানেলের মতো তাদের নিজস্ব পাত্রে একসাথে গোষ্ঠীযুক্ত একটি সাধারণ সম্পত্তিকে আবদ্ধ করার চেষ্টা করুন। আপনার সম্পর্কিত রেডিওব্যাটনগুলি একটি একক পিতামাতার ধারক ভাগ করে নিতে পারে না, তারপরে প্রতিটি রেডিওবাটনের গ্রুপনেম সম্পত্তিটিকে যৌক্তিকভাবে গ্রুপ করার জন্য একটি সাধারণ মান হিসাবে সেট করুন to
সম্পাদনা (এপ্রিল 5 '11):
সরলিকৃত কনভার্টব্যাকের যদি-অন্যথায় কোনও টার্নারি অপারেটর ব্যবহার করতে হয়।
দ্রষ্টব্য - এনুম টাইপ একটি ক্লাসে নেস্টেড (এপ্রিল 28 '11):
আপনার enum প্রকার (বরং নামস্থান সরাসরি বেশি) কোন ক্লাসে নেস্টেড হলে, আপনি XAML মধ্যে enum অ্যাক্সেস করতে + সিনট্যাক্স ব্যবহার করতে পারবেন যেমন প্রশ্নের একটি (হিসাবে চিহ্নিত নয়) উত্তর বিবৃত হতে পারে
খুঁজে পাওয়া যায়নি ডাব্লুপিএফ-তে স্থির রেফারেন্সের জন্য এনাম টাইপ করুন :
রূপান্তরকারীপ্যারামিটার = {x: স্থিতিশীল স্থানীয়: আপনারক্লাস + আপনার নেস্টেডনাম টাইপ.ইনুম 1
এই মাইক্রোসফ্ট কানেক্ট ইস্যুর কারণে , তবে, ভিএস 2010-এর ডিজাইনার আর স্টেটিং লোড করবে না "Type 'local:YourClass+YourNestedEnumType' was not found."
, তবে প্রকল্পটি সংকলন করে এবং সফলভাবে চলবে। অবশ্যই, আপনি যদি নিজের এনাম টাইপটি সরাসরি নেমস্পেসে স্থানান্তর করতে সক্ষম হন তবে আপনি এই সমস্যাটি এড়াতে পারেন।
সম্পাদনা করুন (জানুয়ারী 27 '12):
যদি এনাম পতাকা ব্যবহার করে তবে রূপান্তরটি নিম্নরূপ হবে:
public class EnumToBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return ((Enum)value).HasFlag((Enum)parameter);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value.Equals(true) ? parameter : Binding.DoNothing;
}
}
সম্পাদনা করুন (মে 715 '):
নালাম এনামের ক্ষেত্রে ( এটি প্রশ্নে জিজ্ঞাসা করা হয়
না , তবে কিছু ক্ষেত্রে এটি প্রয়োজন হতে পারে, যেমন: ডিআর থেকে ওআরএম নাল ফিরে আসে বা যখনই এটি বুঝতে পারে যে প্রোগ্রামটির যুক্তিতে মানটি সরবরাহ করা হয়নি), যোগ করতে ভুলবেন না রূপান্তর পদ্ধতিতে প্রাথমিক নাল চেক করুন এবং উপযুক্ত বুল মানটি ফিরিয়ে দিন, এটি সাধারণত মিথ্যা (যদি আপনি কোনও রেডিও বোতাম নির্বাচিত না চান), নীচের মত:
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null) {
return false; // or return parameter.Equals(YourEnumType.SomeDefaultValue);
}
return value.Equals(parameter);
}
দ্রষ্টব্য - নাল রেফারেন্সএক্সেপশন (10 অক্টোবর '18):
একটি নালারফেরান এক্সেপশন নিক্ষেপ করার সম্ভাবনাটি সরাতে উদাহরণ আপডেট করে।
IsChecked
প্রত্যাবর্তন
Nullable<Boolean>
একটি যুক্তিসঙ্গত সমাধান বলে মনে হচ্ছে returning