【问题标题】:get phone accent brush programmatically c#以编程方式获取电话口音刷c#
【发布时间】:2012-12-11 23:25:11
【问题描述】:

我在 xaml 中有文本框

<TextBlock Style="{StaticResource PhoneTextExtraLargeStyle}" FontSize="{StaticResource PhoneFontSizeLarge}" FontFamily="{StaticResource PhoneFontFamilySemiLight}" Margin="12,10,12,0" />

如何从 windows phone 7 / 7.5 / 8 的系统资源中以编程方式 (c#) 获取 phoneaccentbrush 的值,以便我可以设置前景色以匹配在 WP 设置中选择的重音。

【问题讨论】:

    标签: windows-phone


    【解决方案1】:

    首先,您需要在 C# 类的 Constructor 之前创建 currentAccentColorHex:

    public partial class MainPage : PhoneApplicationPage
    {
        Color currentAccentColorHex = (Color)Application.Current.Resources["PhoneAccentColor"];
    
        // Constructor
        public MainPage()
        {          
            //...
    

    然后在需要为控件设置颜色的任何地方使用它:控件 MyControl 的背景属性示例:

    SolidColorBrush backColor = new SolidColorBrush(currentAccentColorHex);
    MyControl.Background = backColor;
    

    希望有帮助

    【讨论】:

    • 不幸的是,使用此方法更改主题后必须重新启动应用程序。否则,旧的主题值将从 Ressource 字典中拉出。
    【解决方案2】:

    感谢 Spaso :) 我做了一些研究,在你的帮助下我想出了以下代码

    var phoneAccentBrush =  new SolidColorBrush((App.Current.Resources["PhoneAccentBrush"] as SolidColorBrush).Color);
    

    【讨论】:

    • 有趣。我故意避免不向您发送像您这样的代码,只是为了更清楚发生了什么。好的,两个代码都可以。
    • Spaso,首先为您提供了解决方案,为您投了赞成票
    • 上面的代码行出现错误“找不到具有给定键的资源”。我也在共享代码项目中尝试这样做,因此我可以在手机和平​​板电脑应用程序之间共享代码。不确定这是否重要。
    【解决方案3】:

    在 xaml 中将其添加到您的文本框

    Foreground="{StaticResource PhoneAccentBrush}"
    

    或从 c# 中设置

    btnDefault.Foreground = new SolidColorBrush((Color)Application.Current.Resources["PhoneAccentColor"]);
    

    【讨论】:

      猜你喜欢
      • 2013-06-22
      • 1970-01-01
      • 2012-03-19
      • 2011-08-22
      • 2011-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多