实时更改Windows 8应用程序背景(C#/ XAML)

时间:2013-05-07 21:50:47

标签: c# xaml background switch-statement toggle

我正在做一个Windows 8应用程序(METRO UI / XAML / C#),我在设置栏中有一个拨动开关。我想让这个开关实时地在“光”和“暗”主题之间进行选择。 我已经在我的StandardStyles.xaml上创建了主题:

<!-- LIGHT THEME -->

<Style x:Key="LightTheme" TargetType="Panel">
    <Setter Property="Background">
        <Setter.Value>
            <LinearGradientBrush>
                <GradientStop Color="#cdeae5" Offset="0"/>
                <GradientStop Color="#c0dabd" Offset="1"/>
            </LinearGradientBrush>
        </Setter.Value>
    </Setter>
    <Setter Property="ChildrenTransitions">
        <Setter.Value>
            <TransitionCollection>
                <EntranceThemeTransition/>
            </TransitionCollection>
        </Setter.Value>
    </Setter>
</Style>

<!-- DARK THEME -->

<Style x:Key="DarkTheme" TargetType="Panel">
    <Setter Property="Background">
        <Setter.Value>
            <LinearGradientBrush>
                <GradientStop Color="#fea569" Offset="0"/>
                <GradientStop Color="#f63f3b" Offset="1"/>
            </LinearGradientBrush>
        </Setter.Value>
    </Setter>
    <Setter Property="ChildrenTransitions">
        <Setter.Value>
            <TransitionCollection>
                <EntranceThemeTransition/>
            </TransitionCollection>
        </Setter.Value>
    </Setter>
</Style>

如何使用切换开关实时选择它们? 我认为这是这样的:

private void ThemeSwitch_Toggled(object sender, RoutedEventArgs e)
    {
        if (ThemeSwitch.IsOn)
        {
            // LIGHT THEME
            // TEXT SHOWING "Light Theme"
        }
        else
        {
            // DARK THEME
            // TEXT SHOWING "Dark Theme"
        }

    }

但那是我能走得最远的。

提前致谢。这是我第一次用C#和XAML编程。

2 个答案:

答案 0 :(得分:1)

我似乎无法实时更改主题:

  

注意应用启动时会应用主题。在应用运行时,您无法更改主题。

http://msdn.microsoft.com/en-us/library/windows/apps/hh986965.aspx

嗯,太糟糕了。

答案 1 :(得分:0)

使用下面的c#代码

grdMain.Background = new SolidColorBrush(Windows.UI.Color.FromArgb(255, 123, 183, 42));