MVVMUIのラジオボタンごとに個別のIsChecked*SomePropertyName*を作成するのに飽きることがあります。別の方法は、各ボタンに名前を付け、IsChecked = trueであるボタンを見つけて、その名前を私の強力なテキストモデルで意味のあるものに変換することです。
このすべての厄介なロジックをカプセル化するコレクションをSilverlightやWPFに戻す方法があれば、それは素晴らしいことです。私のコードのユースケースの例は次のとおりです。
<Page x:Name="idHost"
...>
<TextBlock Text="{Binding Path=RadioButtonSource.CurrentEnabledButton, Mode=OneWay, StringFormat='Selected Filter: {0}', TargetNullValue='Selected Filter: not selected', ElementName=idHostPage}" />
<RadioButton IsChecked="{Binding Path=RadioButtonSource[Inherited], Mode=TwoWay, ElementName=idHostPage}"
IsThreeState="False"
GroupName="PostFilter"
Content="Inherited" />
<RadioButton IsChecked="{Binding Path=RadioButtonSource[Direct], Mode=TwoWay, ElementName=idHostPage}"
IsThreeState="False"
GroupName="PostFilter"
Content="Direct" />
...
ページの背後にあるコードは次のようになります。
public partial class MyPage : Page {
public MyPage() {
this.RadioButtonSource = new RadioButtonSource();
}
public RadioButtonSource RadioButtonSource {
get { return (RadioButtonSource)GetValue(RadioButtonSourceProperty); }
set { SetValue(RadioButtonSourceProperty, value); }
}
public static readonly DependencyProperty RadioButtonSourceProperty = DependencyProperty.Register("RadioButtonSource", typeof(RadioButtonSource), typeof(MyPage), new PropertyMetadata(null));
}