WPF RadioButton Brush

索引サイト
RadioButton の背景色ではうまく表現できないので Rectangle 使用する。StackPanel で使えないのが少々つらい。




<Grid Background="Tan" Name="grid_main">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="10*" />
<ColumnDefinition Width="500*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid Margin="5" Name="grid1" VerticalAlignment="Top" Grid.Column="1" Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="8*" />
<ColumnDefinition Width="8*" />
<ColumnDefinition Width="8*" />
</Grid.ColumnDefinitions>
<Rectangle Grid.Column="1" Margin="5" Name="rectangle11" Stroke="Black" />
<Rectangle Grid.Column="2" Margin="5" Name="rectangle12" Stroke="Black" />
<Rectangle Grid.Column="3" Margin="5" Name="rectangle13" Stroke="Black" />
<RadioButton Content="RadioButton11" Margin="10,10" Name="radioButton11" Grid.Column="1" Checked="radioButton11_Checked" Unchecked="radioButton11_Unchecked" />
<RadioButton Content="RadioButton12" Margin="10,10" Name="radioButton12" Grid.Column="2" Checked="radioButton12_Checked" Unchecked="radioButton12_Unchecked" />
<RadioButton Content="RadioButton13" Margin="10,10" Name="radioButton13" Grid.Column="3" Checked="radioButton13_Checked" Unchecked="radioButton13_Unchecked" />
</Grid>
<Grid Margin="5" Name="grid2" VerticalAlignment="Top" Grid.Column="1" Grid.Row="2" Background="AliceBlue">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="8*" />
<ColumnDefinition Width="8*" />
<ColumnDefinition Width="8*" />
</Grid.ColumnDefinitions>
<Rectangle Grid.Column="1" Margin="5" Name="rectangle21" Stroke="Black" />
<Rectangle Grid.Column="2" Margin="5" Name="rectangle22" Stroke="Black" />
<Rectangle Grid.Column="3" Margin="5" Name="rectangle23" Stroke="Black" />
<RadioButton Content="RadioButton21" Margin="10,10" Name="radioButton21" Grid.Column="1" Checked="radioButton21_Checked" Unchecked="radioButton21_Unchecked" />
<RadioButton Content="RadioButton22" Margin="10,10" Name="radioButton22" Grid.Column="2" Checked="radioButton22_Checked" Unchecked="radioButton22_Unchecked" />
<RadioButton Content="RadioButton23" Margin="10,10" Name="radioButton23" Grid.Column="3" Checked="radioButton23_Checked" Unchecked="radioButton23_Unchecked" />
</Grid>
</Grid>




//***************************************
// grid1
//***************************************
private void radioButton11_Checked(object sender, RoutedEventArgs e)
{
this.rectangle11.Fill = new SolidColorBrush(Colors.Yellow);
}
private void radioButton12_Checked(object sender, RoutedEventArgs e)
{
this.rectangle12.Fill = new SolidColorBrush(Colors.Yellow);
}
private void radioButton13_Checked(object sender, RoutedEventArgs e)
{
this.rectangle13.Fill = new SolidColorBrush(Colors.Yellow);
}
//*******************
// reset
//*******************
private void radioButton11_Unchecked(object sender, RoutedEventArgs e)
{
this.rectangle11.Fill = this.grid_main.Background;
}
private void radioButton12_Unchecked(object sender, RoutedEventArgs e)
{
this.rectangle12.Fill = this.grid_main.Background;
}
private void radioButton13_Unchecked(object sender, RoutedEventArgs e)
{
this.rectangle13.Fill = this.grid_main.Background;
}
//***************************************
// grid2
//***************************************
private void radioButton21_Checked(object sender, RoutedEventArgs e)
{
this.rectangle21.Fill = Brushes.Red;
}
private void radioButton22_Checked(object sender, RoutedEventArgs e)
{
this.rectangle22.Fill = Brushes.Red;
}
private void radioButton23_Checked(object sender, RoutedEventArgs e)
{
this.rectangle23.Fill = Brushes.Red;
}
//*******************
// reset
//*******************
private void radioButton21_Unchecked(object sender, RoutedEventArgs e)
{
this.rectangle21.Fill = this.grid2.Background;
}
private void radioButton22_Unchecked(object sender, RoutedEventArgs e)
{
this.rectangle22.Fill = this.grid2.Background;
}
private void radioButton23_Unchecked(object sender, RoutedEventArgs e)
{
this.rectangle23.Fill = this.grid2.Background;
}

さすがに、上のでは見づらいので現実のコードとしては以下のような雰囲気




<RadioButton Content="RadioButton11" Margin="10,10" Name="radioButton11" Grid.Column="1" Checked="radioButton10_Checked" Unchecked="radioButton10_Unchecked" />
<RadioButton Content="RadioButton12" Margin="10,10" Name="radioButton12" Grid.Column="2" Checked="radioButton10_Checked" Unchecked="radioButton10_Unchecked" />
<RadioButton Content="RadioButton13" Margin="10,10" Name="radioButton13" Grid.Column="3" Checked="radioButton10_Checked" Unchecked="radioButton10_Unchecked" />




//***************************************
// grid1
//***************************************
private void radioButton10_Checked(object sender, RoutedEventArgs e)
{
if (this.RadioButton11.IsChecked == true) {this.rectangle11.Fill = Brushes.Yellow;}
if (this.RadioButton12.IsChecked == true) {this.rectangle12.Fill = Brushes.Yellow;}
if (this.RadioButton13.IsChecked == true) {this.rectangle13.Fill = Brushes.Yellow;}
}
//*******************
// reset
//*******************
private void radioButton10_Unchecked(object sender, RoutedEventArgs e)
{
this.rectangle11.Fill = this.grid_main.Background;
this.rectangle12.Fill = this.grid_main.Background;
this.rectangle13.Fill = this.grid_main.Background;
}




AX