혼자 공부하는중에 이상한점이 보아서요..
컴퓨터가 2대인데.. 둘다 삼성 완제품 데스트탑PC입니다.
하나는 윈도우7이고 일반적인 데스트탑PC이고,
하나는 삼성 올인원(모니터와 본체가 합쳐진 모델)제품이고 윈도우8입니다.
동일한 프레임워크 4.7로 빌드했을때..
<TabControl.Resources>
<Style TargetType="ListBoxItem">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="BorderBrush" Value="Red"/>
<Setter Property="BorderThickness" Value="1"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="YellowGreen"/>
</Trigger>
</Style.Triggers>
</Style>
</TabControl.Resources>
이러한 소스가 있을경우
윈도우 7버전 컴퓨터에선 소스내용대로 동작하는데
윈도우 8버전(올인원 제품)은 BorderBrush,Background 속성값에 색상이 적용되지를 않아서요.
더 이상한건 BorderThickness 속성은 또 적용이 됩니다.
다른 속성은 윈도우7,8이나 차이가 없는데.. Brush값이 할당되는 속성은 차이가 나는게 도통 감을 잡을수 없어서요.
그래서 윈도우8에서 ListBoxItem을 ControlTemplate로 Border로 한번 감싼뒤에
ControlTemplate.Trigger로 BorderBrush속성을 정의하니깐 이건또 동작이 됩니다.
이번 소스 말고도 콤보박스도 Style로 BorderBrush를 정의하면
윈도우7은 색상이 적용이 되는데. 윈도우 8은 적용이 안되네요..
심지어 콤보박스는 Style만 정의하고 Trigger는 사용하지 않았는데도요.
질문1)같은 프레임워크 버전인데도 윈도우 버전따라서 이와같이 다른 이유가 있나요?
질문2)만약 윈도우 버전별 Style의 Brush값 또는 Trigger 사용시 적용여부가 틀린게 맞다면..
ControlTemplate를 정의해서 Border를 추가하고 이것을 ControlTemplate.Trigger로 설정해야 한다는말인데..
기본적인 컨트롤마저도 이렇게 해야 한다면 이건 몬가 아니지 않나 생각이 들어서요.
테마속성을 변경한다든지..
아니면 따로 윈도우8에서 개발시 소스코드상에서 다른 설정을 통해서 이런 문제를 해결할 방법이 있는지요?
[최초 등록일: ]
[최종 수정일: 4/23/2018]