Q022. ToggleButton のチェック時に、Background を変えても表示に反映されません。Background のチェック時に Background を変える方法はありますか。

A. 以下のように DataTemplate を用意し、ToggleButton.IsChecked プロパティが True になった場合に ContentTemplate に設定するよう Trigger を定義します。

<Window.Resources>
	<DataTemplate x:Key="BlueBackground">
		<Grid Background="Blue" >
			<TextBlock HorizontalAlignment="Center" 
					   VerticalAlignment="Center" 
					   TextAlignment="Center" 
					   Text="{Binding}"/>
		</Grid>
	</DataTemplate>
	<Style x:Key="toggleButton" TargetType="{x:Type ToggleButton}">
		<Style.Triggers>
			<Trigger Property="IsChecked" Value="True">
				<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
				<Setter Property="VerticalContentAlignment" Value="Stretch"/>
				<Setter Property="ContentTemplate" Value="{StaticResource BlueBackground}"/>
			</Trigger>
		</Style.Triggers>
	</Style>
</Window.Resources>


WPF FAQ の目次に戻る