Microsoft MVP성태의 닷넷 이야기
WPF OS버전 따라 Style 적용이 안되는 프로퍼티가 있을수 있나요? [링크 복사], [링크+제목 복사]
조회: 9613
글쓴 사람
대전박
홈페이지
첨부 파일
 

 혼자 공부하는중에 이상한점이 보아서요..

컴퓨터가 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]


비밀번호

댓글 작성자
 



2018-04-23 02시21분
1) 글쎄요. WPF의 경우 DirectX 런타임에 기반하므로 아무래도 GDI 보다는 설치된 DirectX 버전/디바이스 드라이버 등에 좀 더 민감할 수는 있습니다.

2) 원래 의도는 윈도우 버전 별로 틀리면 안됩니다. 제가 윈도우 8이 없어서 딱히 테스트는 할 수 없지만, 현재 상황에서 그런 문제가 있다면 우회하기 위해 어쩔 수 없이 그런 편법을 쓰셔야 할 것입니다. 아니면, 마이크로소프트에 기술 지원을 요청할 수 있겠고... 하지만 그 전에 다른 윈도우 8에서도 그런 문제가 발생하는지 테스트를 좀 더 해봐야 겠지요.
정성태
2018-04-23 05시09분
[대전박] 답변 감사드립니다.^^

글 올리고 나서 구글링 해보니깐 윈도우 7와8사이에 기본 콤보박스의 BorderBrush속성 때문에 글이 올라온게 보이네요...
7에서는 되는데 8에서는 안된다는 글들이 몇개 보이긴 했는데... ㅜㅜ

 참고로 8에서 빌드 했던 소스를 7로 그대로 가져와서 빌드 하니깐 귀신(?)처럼 되버려서요..
좀 황당하고 이거 윈도우 10에서는 어떨까 궁금하긴 하는데 제 주변에 윈도우 10은 또 안보여서..
 이거 8에만 해당되는건지.. 아니면 모든 윈도우 버전별로 속성값 적용여부가 틀린건지..
 Style에선 안되는데 ControlTemplate에서는 되는것도 재미있고...
 
 기회가 되면 다른8에도 테스트 해봐야 겠습니다.

 늘 성태님 글로 공부하는 사람으로써 다시한번 답변에 감사드립니다.^^
 
 
[guest]

... 16  17  18  19  20  21  22  23  24  25  [26]  27  28  29  30  ...
NoWriterDateCnt.TitleFile(s)
5256세퉁11/8/20196678안녕하세요~ 질문은 아닙니다만.. [1]
5255C#초보11/6/20197219중첩 딕셔너리를 어떻게 만들 수 있을까요? [2]
5252김동수11/4/20196820Windows 10 로그인 ( Credential Provider ) 문의드립니다. [1]
5251kss11/1/20196935c#문법질문입니다. [1]
5250이대희10/31/20197027시작하세요 C# 7.3 프로그래밍 책이 절판이네요. [1]
5249황태관10/24/20197496c# 폼안에 특정 프로그램 불러오기.. [1]파일 다운로드1
5248황태관10/23/20198348C언어로 만든 dll 를 참조해서 c#으로 만들려면.. [3]
5245민성10/21/20197494안녕하세요 Ui 스레드 접근에 대해서 질문드리도록 하겠습니다. [1]
5244hbli...10/20/20196901두개의 쓰레드에서 하나의 Queue 리스트 사용시 질문드립니다. [2]
5243최선호 donator10/18/20196478Screen Capture 와.. Overlay 질문 좀 드릴게요 ㅠ.ㅠ ( 장문 주의..... ) [2]
5241C#초보10/16/20198523C# USB 통신 구현 관련 질문 드립니다! [1]
5240김동규10/15/20198463런타임 시 Encoding.Default를 UTF-8로 설정할 수 있을까요? [3]
5239밤톨이10/13/20196709시놀리지 DSM에 asp.net core 2 웹서버 구축이 가능한가요? [1]
5238권석헌10/2/20197257C# - C++ 간의 Memorymapped file 관련 Data 질문좀 드립니다 선생님 [1]
5237유호성10/1/20197014사용자 정의 컨트롤 VS IDE에서만 Exception 발생 [2]
5234koko9/25/20199277안녕하세요. 64bit WPF -> 32bit C++ DLL Import사용 문의 드립니다. [3]
5232fox3...9/24/20197100C# Memorymappedfile 재 업로드 드립니다.(실행순서 및 질문내용 정리) [7]파일 다운로드1
5231fox3...9/24/20197492C# 메모리맵드파일 관련 질문드립니다. 최소한의 재현가능코드 첨부후 재질문 드립니다. [2]파일 다운로드1
5230질문9/23/20197147C++ 로 만든 dll 을 C#에서 사용할 때 질문 [2]
5229fox3...9/23/20199533C# 메모리맵드파일 관련 질문드립니다. [2]
5227세퉁9/23/20198216WPF Textblock 폰트 크기에 따라 글자 색이 깨지는 현상이 있습니다. [3]파일 다운로드1
5226김대훈9/23/20197848정말 황당한 경우입니다.. [2]
5223김태균9/19/20197581책 소개 링크가 7.1버전판으로 이어집니다. [1]
5222냥냥이9/14/20198125프로그래밍 논리력이 많이 부족합니다 [3]
5219티지레몬9/9/20199598c# PCB 자동화 프로그램(윈도우 폼 위주로 작업) 제작 준비 [3]
5218민성9/9/20197655안녕하세요 WPF에서 xaml 안에 다른 xaml을 넣고 싶습니다. [1]파일 다운로드1
... 16  17  18  19  20  21  22  23  24  25  [26]  27  28  29  30  ...