사내 WPF 프로그램에 어떤 테마가 적용된 것 같습니다.
Button의 경우에는 Grid 바로 밑에 들어있는 형태로 Grid-Button 형태에 대해서만 스타일이 적용되도록 한 것 같습니다. Grid 안에 Button이 들어있더라도, 예를 들어, Grid-StackPanel-Button 순서로 들어있으면 스타일 적용이 안됩니다.
아래와 같은 경우에만 적용이 됩니다.
[되는 경우]
<Grid Grid.Row="1" Grid.ColumnSpan="3">
<Button x:Name="btnAddCostume" Content="코스튬 추가" />
<Button x:Name="btnDelCostume" Content="코스튬 삭제" />
</Grid>
[안되는 경우]
<Grid Grid.Row="1" Grid.ColumnSpan="3">
<StackPanel Orientation="Horizontal">
<Button x:Name="btnAddCostume" Content="코스튬 추가" />
<Button x:Name="btnDelCostume" Content="코스튬 삭제" />
</StackPanel>
</Grid>
이 상황에서 Grid 안에 Button들이 여러 개가 있는데, 이 버튼들이 모두 다닥 다닥 붙어 있습니다.
Margin을 주면 간단하게 해결되는 문제이기 때문에 Button들마다 Margin을 주지 않고, Grid안에 Grid.Resource에서 Target Type 없이 Style을 정의하니까 테마가 풀려버립니다.
[테마가 풀리는 경우]
<Grid Grid.Row="1" Grid.ColumnSpan="3">
<Grid.Resources>
<Style TargetType="Button">
<Setter Property="Margin" Value="0,0,5,0" />
<Setter Property="Height" Value="28" />
<Setter Property="Width" Value="110" />
</Style>
</Grid.Resources>
<Button x:Name="btnAddCostume" Content="코스튬 추가" />
<Button x:Name="btnDelCostume" Content="코스튬 삭제" />
</Grid>
[테마가 풀리지 않는 경우]
<Grid Grid.Row="1" Grid.ColumnSpan="3">
<Button x:Name="btnAddCostume"
Width="110"
Height="28"
Margin="0,0,5,0"
Content="코스튬 추가" />
<Button x:Name="btnDelCostume"
Width="110"
Height="28"
Margin="0,0,5,0"
Content="코스튬 삭제" />
</Grid>
테마를 통해 Style이 적용되던 게 제가 Resource로 덮어 씌워서 테마가 지워진 느낌입니다.
제가 만든 리소스 스타일에 기존의 테마를 상속받으면 되는데 이런 경우 어떻게 해야할까요?