2017-02-17 2 views
-1

Я пытаюсь переопределить стили Material Design for Xaml ToolKit в соответствии с моими требованиями, следующее является XAML в app.xaml, который я придумал после прочтения о переопределении на странице GitHub из библиотека, но это, кажется, не работает, и я не получаю, почему, так как я не имею большой опыт работы в приложениях WPF, вот код, я попробовал:Override Специфических свойств стиля с использованием ресурсов Словаря

<Color x:Key="DarkBlueColor">#00479D</Color> 
<FontFamily x:Key="MicrosoftYaHei">Microsoft YaHei</FontFamily> 
<SolidColorBrush x:Key="WindowBrush" Color="#00479D"/> 

<Style x:Key="WindowStyle" 
     x:Name="WindowStyle" 
     BasedOn="{StaticResource MaterialDesignPaper}" 
     TargetType="{x:Type Window}"> 
    <Setter Property="Background" Value="{DynamicResource WindowBrush}"></Setter> 
</Style> 

в настоящее время, чтобы получить знакомый я только пытается изменить фон окна, вот код от MainWindow.xaml:

<Window x:Class="WPFApplication.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:XCMG.CarMan2" 
     mc:Ignorable="d" 
     Title="MainWindow" Height="350" Width="525" 
     Style="{StaticResource WindowStyle}" 
     xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"> 
<Grid> 

</Grid> 
</Window> 

Когда я запустить приложение после добавления кода выше, он бросает исключение, говоря:

Невозможно привести объект типа «System.Windows.Media.SolidColorBrush» к типу «System. Windows.Style.

ответ

1

«MaterialDesignPaper» является SolidColorBrush и вы не можете основывать Window стиль на Brush.

Удалить атрибут BasedOn и x:Name от вашего Style:

<Style x:Key="WindowStyle" 
     TargetType="{x:Type Window}"> 
    <Setter Property="Background" Value="{DynamicResource WindowBrush}"></Setter> 
</Style> 

, но я хочу переопределить MaterialDesignBrush ПРЕДПОСЫЛКИ

Определить новый Brush ресурс с тем же ключом, то:

<SolidColorBrush x:Key="MaterialDesignPaper" Color="#00479D"/> 
+0

, но я хочу переопределить MaterialDesignBrush BackGround –

+0

Определить новый ресурс Brush с тем же ключом. См. Мой отредактированный ответ. – mm8

+0

будет ли это переопределять свойство Color существующего стиля с помощью этого ключа, который находится в другой DLL? –

Смежные вопросы