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
として渡したいのですが・・・
どなたか何かご存知でしたら、教えてください。