RadioButtonのカスタムコントロールにenumのリストをバインドしたい
WPFで、同じGroupNameを持つRadioButtonのリストを構成するカスタムコントロールを作ろうとしています。
このカスタムコントロールは、次のDependencyPropertyを持ちます。
ItemsSource:enumのコレクション(enumなら何でもOK)
SelectedValue:選択されているRadioButtonに対応するenumの値
enumの値からRadioButtonの表示テキスト(Content)への変換は、IValueConverterを実装して適当に処理しています。
ItemsSourceからRadioButtonを生成する処理には、ItemsControlを利用しました。
ここまでは問題なかったのですが、SelectedValueプロパティと、対応するRadioButtonのIsCheckedを結びつける方法が分かりません。
ItemsControlを使わず、XAMLで静的に作られたものであれば、各RadioButtonのCoverterParameterに対応するenumの値を記述し、Converterに渡すだけで良いことは分かるのですが、動的にラジオボタンを作ろうとして詰まってしまいました。
下記のコードの、ConvertParameter={Binding}の部分が問題です。
<ItemsControl Name="itemsControl" ItemsSource="{Binding ItemsSource, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<RadioButton IsChecked="{
Binding SeletedValue,
Converter={StaticResource RadioButtonCheckedConverter},
ConverterParameter={Binding},
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}
}"
GroupName="{Binding GroupName, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}"
Content="{Binding Converter={StaticResource RadioButtonTextConverter}}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
このままでは
型 'Binding' の 'ConverterParameter' プロパティで 'Binding' を設定することはできません。
'Binding' は、DependencyObject の DependencyProperty でのみ設定できます。
というエラーが出てしまい、動作しません。
何とかして、RadioButtonCheckedConverterに各RadioButtonにバインドされているenumの値をConverterParameterとして渡したいのですが・・・
どなたか何かご存知でしたら、教えてください。