انقیاد RadioButtonها در WPF به یک Enum
نویسنده: وحید نصیری
تاریخ: ۱۳۹۲/۱۰/۲۷ ۱۲:۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
namespace WpfBindRadioButtonToEnum.Models
{
public enum Gender
{
Female,
Male
}
} using System;
using System.Globalization;
using System.Windows;
using System.Windows.Data;
namespace WpfBindRadioButtonToEnum.Converters
{
public class EnumBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (Enum.IsDefined(value.GetType(), value) == false)
return DependencyProperty.UnsetValue;
return Enum.Parse(value.GetType(), parameter.ToString()).Equals(value);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return Enum.Parse(targetType, parameter.ToString());
}
}
} using System.ComponentModel;
using WpfBindRadioButtonToEnum.Models;
namespace WpfBindRadioButtonToEnum.ViewModels
{
public class MainWindowViewModel : INotifyPropertyChanged
{
Gender _genderValue;
public Gender GenderValue
{
get { return _genderValue; }
set
{
_genderValue = value;
notifyPropertyChanged("GenderValue");
}
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
private void notifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
#endregion
}
} <Window x:Class="WpfBindRadioButtonToEnum.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:VM="clr-namespace:WpfBindRadioButtonToEnum.ViewModels"
xmlns:C="clr-namespace:WpfBindRadioButtonToEnum.Converters"
xmlns:Models="clr-namespace:WpfBindRadioButtonToEnum.Models"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<VM:MainWindowViewModel x:Key="VMainWindowViewModel" />
<C:EnumBooleanConverter x:Key="CEnumBooleanConverter" />
</Window.Resources>
<StackPanel DataContext="{Binding Source={StaticResource VMainWindowViewModel}}">
<TextBlock Text="Gender" Margin="3" />
<RadioButton Content="{x:Static Models:Gender.Male}"
IsChecked="{Binding GenderValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged,
Converter={StaticResource CEnumBooleanConverter},
ConverterParameter={x:Static Models:Gender.Male}}"
Margin="3" GroupName="G1" />
<RadioButton Content="{x:Static Models:Gender.Female}"
IsChecked="{Binding GenderValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged,
Converter={StaticResource CEnumBooleanConverter},
ConverterParameter={x:Static Models:Gender.Female}}"
Margin="3" GroupName="G1" />
</StackPanel>
</Window>