Ваш ControlTemplate фактически не использует свойство Background, но он присваивает конкретное значение свойству Background границы, а именно {DynamicResource LightBrush}
. Теперь, когда вы устанавливаете свойство Background локально, это не имеет никакого эффекта, потому что Border по-прежнему использует ресурс LightBrush
.
Вы должны использовать TemplateBinding
s, чтобы сделать правильный фон в вашем контроле следующим образом:
<Style TargetType="{x:Type GroupBox}">
<!-- set default value for the template -->
<Setter Property="Background" Value="{DynamicResource LightBrush}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupBox}">
<Grid SnapsToDevicePixels="true">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="6" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="6" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="6" />
</Grid.RowDefinitions>
<!-- Note the new TemplateBinding for the Background property! -->
<Border Grid.ColumnSpan="4" Grid.RowSpan="4" Background="{TemplateBinding Background}" CornerRadius="4,4,4,4" BorderThickness="1,1,1,1" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Таким образом, Border фактически использует свойство Background для GroupBox. Чтобы по умолчанию использовать LightBrush
, я добавил Setter, который определяет значение по умолчанию для свойства Background. Это значение затем может быть переопределено путем локальной установки свойства Background в вашем GroupBox.