분명히 똑같이 짠 다른 코드는 잘 돌았는데 갑자기 리소스를 찾을 수 없다고 나오는 나쁜 예외....

이유가 뭘지 며칠동안 고민했는데 정말 별거 아닌 이유였네요
<Style x:Key="GeneralGrid" TargetType="{x:Type Grid}">
<Style.Resources>
<Style BasedOn="{StaticResource CommonDataGrid}" TargetType="DataGrid" />
</Style.Resources>
</Style>
해당 코드에서 발생한 예외였는데요
간단하게 설명하자면 특정 Grid 스타일 내에서만 사용하고 싶은 DataGrid 스타일이 있어서 작성한 코드입니다
위 코드처럼 작성하시면 GeneralGrid 스타일을 적용한 Grid 내의 Datagrid의 스타일은 모두 CommonDataGrid 스타일이 적용됩니다.
Style.Resources를 사용하시면 특정 스타일 내에서 다른 컨트롤들의 UI도 쉽게 설정하실 수 있습니다.
버젓이 존재하고 있는 'CommonDataGrid' 스타일이 자꾸 찾을 수 없다고 나와서 정말정말 이해가 안 됐습니다
도대체 ... 왜 찾을 수 없니? 내 눈엔 잘만 보이는데...
StaticResource가 잘못된 걸까 해서 DynamicResource로 변경해보고 별 쇼를 다했는데도 안 되더라구요 ...
팀 형에게 헬프를 쳤더니 팀 형아가 말합니다
"CommonDataGrid 스타일이 GeneralGrid 스타일보다 밑에 있어서 그런거 아냐?"
나 : !?!!?
바로 적용해봤더니 아주 잘 되는군요...

스타일은 순서도 중요한가 봅니다 ㅋㅋㅋㅋㅋㅋ
스타일 내에서 다른 스타일 참조하실때 참고하시면 좋을 것 같아요
<예외가 뜨는 코드>
<Style x:Key="GeneralGrid" TargetType="{x:Type Grid}">
<Style.Resources>
<Style BasedOn="{StaticResource CommonDataGrid}" TargetType="DataGrid" />
</Style.Resources>
</Style>
<Style x:Key="CommonDataGrid" TargetType="{x:Type DataGrid}">
~~~~~~~~
</Style>
<잘 실행되는 코드>
<Style x:Key="CommonDataGrid" TargetType="{x:Type DataGrid}">
~~~~~~~~
</Style>
<Style x:Key="GeneralGrid" TargetType="{x:Type Grid}">
<Style.Resources>
<Style BasedOn="{StaticResource CommonDataGrid}" TargetType="DataGrid" />
</Style.Resources>
</Style>
아직 모르는 부분이 많아 위 내용에 잘못된 점이 있다면 댓글로 피드백 달아주세요!
참고해서 적극적으로 수정하겠습니다. 감사합니다.
'C# > WPF' 카테고리의 다른 글
Datagrid 내에 ItemsSource 외부의 값을 바인딩해야할 때 (0) | 2022.05.02 |
---|---|
Array Binding 시 Property Changed 이벤트 (0) | 2022.02.08 |
WPF Binding된 이미지 파일 접근 시 사용중 Exception (0) | 2022.02.07 |