2017-10-28 1 views
0

그래서 API 응답을 기반으로 동적 인 테마 자체를 디자인하고 있습니다. 프로그래밍 방식으로 리소스 응용 프로그램의 나머지 부분에 대한 색을 설정할 수 있었지만 버튼과 AppBarButton을 가져오고 내 색 구성표에 맞게 색을 설정하는 방법을 찾으려고합니다. 이전에 필수 요소에서 RequestedTheme 속성을 하드 코딩하여이를 변경했습니다.UWP RequestedTheme in resource dictionary

프로그래밍 방식으로 설정할 수있는 리소스 사전에 설정된 정적 리소스에 RequestedTheme 속성을 바인딩하는 방법이 있습니까? 필요한 경우 버튼의 테마를 다르게 수행 할 수 있지만 가능한 경우 각 페이지의 로컬 변수에 바인딩하지 않아도됩니다.

감사합니다.

답변

1

당신은 다음과 같이 정의 테마 자원 클래스를 정의 할 수 있습니다 :

public enum MyTheme 
{ 
    // 
    // Summary: 
    //  Use the Application.RequestedTheme value for the element. This is the default. 
    Default = 0, 
    // 
    // Summary: 
    //  Use the **Light** default theme. 
    Light = 1, 
    // 
    // Summary: 
    //  Use the **Dark** default theme. 
    Dark = 2 
} 

그런 다음 리소스 사전에, 당신은 당신의 다른 테마 자원 정의 할 수 있습니다 : XAML 페이지에서

<Application.Resources> 
    <local:MyTheme x:Key="MyTheme">Light</local:MyTheme> 
</Application.Resources> 

을, 당신은 할 수 그것에 대한 참조 :

코드의 값을 다음과 같이 변경할 수 있습니다.

App.Current.Resources["MyTheme"] = isThemeDark ? "Dark" : "Light"; 
+0

가벼운 리소스에만 바인딩하는 경우 프로그램을 실행하는 동안 변경하려면 모든 페이지에서 프로그래밍 방식으로 XAML을 변경하지 않아도됩니까? –

+0

예. 프로그래밍으로 변경해야합니다. –