none
앱에 적용된 테마를 일괄적으로 변경하는 방법을 알고 싶습니다 RRS feed

  • 질문

  • 안녕하세요. 다람쥐이 입니다

    앱에 적용된 테마, 예를 들어 각 페이지의 배경이미지, GridView 와 같은 컨트롤의 아이템 배경 이미지, 폰트

    버튼 아이콘, 색상 등...

    위와 같은 테마를 여러개 만들어 놓고 설정에서 테마를 선택하면 앱 전체에 일괄적으로 테마가 적용되게 하고 싶습니다

    각가의 테마를 리소스 딕셔너리로 만든다음 교체하면 될거 같은데 방법을 잘 모르겠습니다

    테마를 변경할 수 있는 방법이나 참고할 수 있는 샘플코드가 있으면 부탁드립니다

    좋은 하루되세요~ 감사합니다

    2014년 1월 22일 수요일 오전 9:33

모든 응답

  • 네 말씀하신 리소스 딕셔너리를 이용해서 진행해 보시기 바랍니다.

    ResourceDictionary 및 XAML 리소스 참조

    ResourceDictionary.ThemeDictionaries property

    제시해 드린 답변이 도움이 되었기를 바랍니다.
     
    답변이 문제 해결에 도움이 되었다면 답변으로 채택을 부탁드립니다.
    하지만 문제 해결이 되지 않아서 정확한 답변을 원하는 경우에는 문제의 정보를 더 자세하게 답변으로 제공해주시기 바랍니다

    2014년 1월 23일 목요일 오전 6:32
  • 답변 주셔서 감사드립니다 ^^

    알려주신 링크를 봤는데

    ThemeDictionaries 를 사용하면 될 것 같다는 생각이 들어서 내용을 보니까

    궁금한게 있어서 다시 질문 드립니다

    예제 에서는 Dark 혹은 Light 와 같은 시스템 테마에 대한 것만 설정할 수 있게 되어 있는 것 같고

    앱 내에서 테마 설정하는 것이 아니라 윈도우 설정에서 하는 것 같은데 맞나요?

    제가 구현하고 싶은 것은 제가 만든 앱 내에 있는 설정메뉴에서 테마콤보박스를 열어 원하는 테마를 선택하면

    제가 구성한 테마가 앱에 적용되도록 하는 것입니다

    아래의 코드를 보면 리소스 딕셔너리의 x:Key 값이 Default 혹은 HighContrast 두가지로 되어 있는데

    혹시 여기에 제가 원하는 리소스 딕셔너리를 추가해서 사용해도 되는지와

    (예를 들어 <ResourceDictionary x:Key="MyTheme1"> 와 같은 )

    추가한 것을 설정메뉴에 있는 테마 콤보박스의 테마항목과 어떻게 연동시키는가 하는 것입니다

    (혹은 런타임에 MyTheme1 으로 테마를 변경하고 싶을 경우)

         <ResourceDictionary.ThemeDictionaries>
            <ResourceDictionary x:Key="Default">
                <SolidColorBrush x:Key="codeBackground" Color="LightGray"/>
                <SolidColorBrush x:Key="keywordColor" Color="DarkRed"/>
                <SolidColorBrush x:Key="attributeColor" Color="Red"/>
                <SolidColorBrush x:Key="xamlColor" Color="Blue"/>
            </ResourceDictionary>
            <ResourceDictionary x:Key="HighContrast">
                <SolidColorBrush x:Key="codeBackground" Color="{StaticResource SystemColorWindowColor}"/>
                <SolidColorBrush x:Key="keywordColor" Color="{StaticResource SystemColorWindowTextColor}"/>
                <SolidColorBrush x:Key="attributeColor" Color="{StaticResource SystemColorWindowTextColor}"/>
                <SolidColorBrush x:Key="xamlColor" Color="{StaticResource SystemColorWindowTextColor}"/>
            </ResourceDictionary>
        </ResourceDictionary.ThemeDictionaries>

    방법을 혹시 알고 계시다면 다시 한 번 답변 부탁드리겠습니다

    감사합니다. 좋은 하루 되세요~ ^^


    • 편집됨 Squirrel Lee 2014년 1월 25일 토요일 오전 7:55
    2014년 1월 25일 토요일 오전 7:50