Henehefu 用 ウィキ

メニュー



- Views

最近の更新

取得中です。

WPFメモ > RadioButtonをEnumにバインディング


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

やること

  1. コンバータをつくる
  2. RadioButtonにバインド
  3. ModeをTwoWayにする
  4. ConverterParameterにEnumをToStringしたものを指定
  5. GroupNameをすべて別の名前にする

EnumBooleanConverter

//
    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);
 
            return parameterValue.Equals(value);
        }
 
        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
    }
 

xamlの例

<StackPanel>
    <StackPanel.Resources>
        <cnv:EnumBooleanConverter x:Key="cnvEnum"/>
    </StackPanel.Resources>
 
    <RadioButton GroupName="aLeft"
                 IsChecked="{Binding HorizontalAlignment,
                                     Converter={StaticResource cnvEnum},
                                     Mode=TwoWay,
                                     ConverterParameter=Left}" >左揃え</RadioButton>
    <RadioButton GroupName="aCenter"
                 IsChecked="{Binding HorizontalAlignment,
                                     Mode=TwoWay,
                                     Converter={StaticResource cnvEnum},
                                     ConverterParameter=Center}">中央揃え</RadioButton>
    <RadioButton GroupName="aRight"
                 IsChecked="{Binding HorizontalAlignment,
                                     Mode=TwoWay,
                                     Converter={StaticResource cnvEnum},
                                     ConverterParameter=Right}">右揃え</RadioButton>
</StackPanel>

注意点

GroupNameを別々にしないとバグでバインディングがうまくいかないことがある

タグ一覧