Badraoui نشر 18 نوفمبر 2015 أرسل تقرير نشر 18 نوفمبر 2015 في تطبيق بلغة #C أتوفر على enum:public enum MyLovelyEnum { FirstSelection, TheOtherSelection, YetAnotherOne };وأحصل على قيمته عن طريق: public MyLovelyEnum VeryLovelyEnum { get; set; }ولدي أدوات RadioButtons:<RadioButton Margin="3">First Selection</RadioButton> <RadioButton Margin="3">The Other Selection</RadioButton> <RadioButton Margin="3">Yet Another one</RadioButton>سؤالي هو كيف أربط radiobuttons بقيم enum؟ اقتباس
0 E.Nourddine نشر 19 نوفمبر 2015 أرسل تقرير نشر 19 نوفمبر 2015 أولا عليك باستعمال محوّل -Converter- أكثر تماشيا مع ما تريده، وذلك بالاستعانة بالكلاس الذي يتيح لنا إمكانيات أكبر للتعامل مع enum:public class EnumBooleanConverter : IValueConverter { #region IValueConverter Members public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { string parameterString = parameter as string; if (parameterString == null) return DependencyProperty.UnsetValue; if (Enum.IsDefined(value.GetType(), value) == false) return DependencyProperty.UnsetValue; object parameterValue = Enum.Parse(value.GetType(), parameterString); // valueاسترجاع القيمة return parameterValue.Equals(value); } // واسترجاع القيمة أخر الدالةenumللتأكد من قيم public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { string parameterString = parameter as string; if (parameterString == null) return DependencyProperty.UnsetValue; return Enum.Parse(targetType, parameterString); } #endregion }ثم نَربط حقول RadioButton بقيمة enum المُدخلة من طرف المستخدم:// المُدرجةمن المستخدمenumربط الحقول بقيمة <Grid> <Grid.Resources> <l:EnumBooleanConverter x:Key="enumBooleanConverter" /> </Grid.Resources> <StackPanel > <RadioButton IsChecked="{Binding Path=VeryLovelyEnum, Converter={StaticResource enumBooleanConverter}, ConverterParameter=FirstSelection}">first selection</RadioButton> <RadioButton IsChecked="{Binding Path=VeryLovelyEnum, Converter={StaticResource enumBooleanConverter}, ConverterParameter=TheOtherSelection}">the other selection</RadioButton> <RadioButton IsChecked="{Binding Path=VeryLovelyEnum, Converter={StaticResource enumBooleanConverter}, ConverterParameter=YetAnotherOne}">yet another one</RadioButton> </StackPanel> </Grid>الطريقة الثانية لفعل ذلك، عن طريق محوّل بالشكل التالي - أبسط من السابق- :public class EnumToBooleanConverter : 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) ? parameter : Binding.DoNothing; } }ولربط الحقول بهذا المحول، نستعمل الطريقة :<StackPanel> <StackPanel.Resources> <local:EnumToBooleanConverter x:Key="EnumToBooleanConverter" /> </StackPanel.Resources> <RadioButton IsChecked="{Binding Path=YourEnumProperty, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static local:YourEnumType.Enum1}}" /> <RadioButton IsChecked="{Binding Path=YourEnumProperty, Converter={StaticResource EnumToBooleanConverter}, ConverterParameter={x:Static local:YourEnumType.Enum2}}" /> </StackPanel>Binding Radio Buttons to a Single PropertyWpf Radio ButtonBinding Radio Buttons Using Group Property in WPF اقتباس
السؤال
Badraoui
في تطبيق بلغة #C أتوفر على enum:
وأحصل على قيمته عن طريق:
ولدي أدوات RadioButtons:
سؤالي هو كيف أربط radiobuttons بقيم enum؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.