2016-11-29 123 views
0

这是我的App.xaml如何获取默认的颜色,以我的默认主题

<Style TargetType="CheckBox" x:Key="Checkbox"> 
<Setter Property="BorderBrush"    Value="{DynamicResource WieoRed}" /> 
<Setter Property="BorderThickness"   Value="2" /> 
<Setter Property="VerticalAlignment"  Value="Top" /> 
<Setter Property="Margin"     Value="20,15,0,0" /> 
<Setter Property="FontFamily"    Value="/Resources/Fonts/Source Sans Pro/#Source Sans Pro" /> 
<Setter Property="FontSize"     Value="14" /> 
<Setter Property="HorizontalAlignment"  Value="Left" /> 
<Setter Property="Foreground"    Value="{DynamicResource CheckboxForegroundColor}" /> 
<Setter Property="Background"    Value="{DynamicResource CheckboxBackgroundColor}" /> 
<Setter Property="BorderBrush"    Value="{DynamicResource CheckboxBorderbrushColor}"/> 

这是我darkTheme.xaml(颜色正常工作)

<SolidColorBrush x:Key="CheckboxForegroundColor"    Color="#FFFFFFFF"/> 
<SolidColorBrush x:Key="CheckboxBackgroundColor"    Color="#FF2d2d30"/> 
<SolidColorBrush x:Key="CheckboxBorderbrushColor"    Color="#FFCC1517"/> 

This is in my defaultTheme.xaml

<SolidColorBrush x:Key="CheckboxForegroundColor"    Color="Black"/> 
<SolidColorBrush x:Key="CheckboxBackgroundColor"    Color="{DynamicResource {x:Static SystemColors.WindowColorKey}}"/> 
<SolidColorBrush x:Key="CheckboxBorderbrushColor"    Color="{DynamicResource {x:Static SystemColors.WindowColorKey}}"/> 
<SolidColorBrush x:Key="CheckboxIsCheckedColor"     Color="{DynamicResource {x:Static SystemColors.WindowColorKey}}"/> 

在我的DarkTheme.xaml和DefaultTheme.xaml中,我只创建了我的颜色,并在App.xaml Iam中将它们绑定到颜色,但是当我在运行时更改为默认主题时,大部分颜色都变成了白色。是否有按钮,前景,背景,文本块,复选框等每个控件的默认样式?

回答

0

是已经有默认验看控制,但您可以使用控制模板超限这些默认看起来

https://msdn.microsoft.com/en-us/library/ee230084(v=vs.110).aspx

+0

我不想超出我的默认外观。我想要默认的Windows标准样式,当我选择我的DefaultTheme。我不明白为什么我不会在我的DefaultTheme.xaml中获得默认样式,我已将颜色设置为windowcolorkey,所以为什么不工作? –

0

我有类似的发挥走一走,本次发行为您服务。我想允许测试不同的颜色而不必重新编译应用程序。这样,其他具有视觉色彩设计的人可以更改我正在查找的外部文件并加载它们的配色方案。

所以,它是如何工作的,你有你的正常配色方案适用于应用程序。如果您随后读取新的资源字典并将其合并到当前版本中,则会添加任何新值,但如果存在现有的密钥值,则会覆盖并应用该值,而不会更改设计/外观的其余部分。 (或应用程序资源...)

因此根据需要进行调整,但我所做的只是从您的defaultTheme.xaml XAML文件中进行简单读取。从那里解析成资源字典。然后融入任何你的资源(通用窗口,网格,无论)。

try 
{ 
    var strXaml = File.ReadAllText([your defaultTheme.xaml file]);  
    var dict = (ResourceDictionary)XamlReader.Parse(strXaml); 
    YourWindow.Resources.MergedDictionaries.Add(dict); 
} 
catch 
{ 
    // error if invalid xaml/resource dictionary content 
} 
+0

谢谢你的回答,但我想你误解了我。我在运行时更改主题没有问题。唯一的问题是,在我的defaultThemes.xaml我已经设置所有的颜色WindowColorKey和几乎所有的颜色变成白色。这肯定是一个简单的方法 –