2016-11-29 145 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和幾乎所有的顏色變成白色。這肯定是一個簡單的方法 –