Tuesday, August 6, 2019

WPF combobox background changes not work, apply combobox style windows 8 or later

combobox background 변경 시 변경 안되는 문제점에 대한 내용

https://blog.magnusmontin.net/2014/04/30/changing-the-background-colour-of-a-combobox-in-wpf-on-windows-8/

위 링크에 상세하게 설명이 되어 있는데 대충 내용을 얘기해 보면
Windows7 이전에는
  • SystemColors.WindowBrushKey
  • SystemColors.HighlightBrushKey
요 두 개의 key를 가진 resource로 background color가 변경 되었는데
Windows8 이후에는 이게 동작이 안되기 때문에 다른 방법을 써야 한다는 것이다.

내가 진행하고 있는 공기업 과제의 개발 환경은 아래와 같다.

  • Windows 10, 10.0.18362
  • .NET Core 3.0.100-preview7-012821
이 환경에서 WPF 앱을 만들어서 진행하고 있는데
Combobox 역시 background 변경을 위해 실행해 보면 색이 변하지 않는 동일한 현상이 일어나는 걸 알 수 있다.

아마 Windows8 이상 부터는 WPF에서 지원되지 않게 SystemColors key 값을 바꿔 놓은 듯 하다.

따라서 ComboboxItem style과 template을 새로 정의한 후에 SolidBrushColor의 값들을 ComboboxItem의 key 값으로 변경해서 적용해야 한다.

적용 방법은 처음에 링크에 잘 나와 있다. 그리고 조금만 검색해서 찾아보면 결국 처음의 저 링크의 해결 방법으로 모인다는 사실을 알게 된다. 심지어 "wpf combobox background" 까지만 쳐도 "wpf combobox background color not working"으로 자동완성 되는 문장까지 볼 수 있다.

해결할 수는 있는데 쉽게 해결할 수 있는 문제는 아니다. style과 template을 다시 지정해 줘야 하니까. 이왕 시작한 .net core multi platform 작업에 이 부분을 추가해서 다시 예전처럼 SystemColors 값으로 쉽게 바꿀 수 있게 해줬으면 좋겠다. To microsoft developers.

No comments:

Post a Comment