windows phone 8 xaml在点击时设置按钮的颜色

时间:2013-03-14 09:33:48

标签: xaml windows-phone-8

我正在研究win8手机项目 每当我点击一个按钮,按钮背景变为手机强调色或文本框时,边框颜色变为手机强调色或键盘按钮的颜色 更改手机强调色... 我试图覆盖application.resources < solidColorBrush x:Key="PhoneAccentBrush" color="white" />中的PhoneAccentBrush,但它没有用 有没有办法改变我的应用程序中所有元素的手机强调颜色?

3 个答案:

答案 0 :(得分:5)

您可以更改应用中所有按钮控件的默认样式,使其在{StaticResource PhoneAccentBrush}状态下不使用Pressed

打开Blend并创建一个简单的WP8项目,在其中放入Button,然后获取模板的副本(右键单击按钮并编辑副本)。请参阅Jeff Wilcox's blog for a step-by-step description of the process

然后,您可以将模板粘贴到App.xaml。如果删除x:Key,它将成为该控件的默认样式。

或者,您可以查看this StackOverflow question about overriding the theme everywhere

答案 1 :(得分:3)

如果不使用混合复制整个样式,您只需覆盖默认主题:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.ThemeDictionaries>
            <ResourceDictionary x:Key="Default">
                <!-- Button pressed color -->
                <SolidColorBrush x:Key="ButtonPressedBackgroundThemeBrush" Color="OrangeRed"/>
            </ResourceDictionary>
        </ResourceDictionary.ThemeDictionaries>
    </ResourceDictionary>
</Application.Resources>

至少用wp8.1进行了测试,无论如何我发现ButtonPressedBackgroundThemeBrush有混合物;)

答案 2 :(得分:0)

    private void btnSignIn_Click(object sender, RoutedEventArgs e)
    {
        btnSignIn.Background = GetColorFromHexa("#59BD56");
    }
    public SolidColorBrush GetColorFromHexa(string hexaColor)
    {
        byte R = Convert.ToByte(hexaColor.Substring(1, 2), 16);
        byte G = Convert.ToByte(hexaColor.Substring(3, 2), 16);
        byte B = Convert.ToByte(hexaColor.Substring(5, 2), 16);
        SolidColorBrush scb = new SolidColorBrush(Color.FromArgb(0xFF, R, G, B));
        return scb;
    }