我正在尝试按照我的要求覆盖Material Design for Xaml ToolKit的样式,以下是 app.xaml 中的xaml,我在阅读有关覆盖github页面后想出的内容库,但似乎没有工作,我不明白为什么,因为我没有太多的WPF应用程序工作经验,这是我尝试的代码:
<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'。
答案 0 :(得分:1)
&#34; MaterialDesignPaper&#34;是SolidColorBrush
,您无法在Window
上建立Brush
样式。
从BasedOn
删除x:Name
属性和Style
:
<Style x:Key="WindowStyle"
TargetType="{x:Type Window}">
<Setter Property="Background" Value="{DynamicResource WindowBrush}"></Setter>
</Style>
但我想覆盖MaterialDesignBrush BackGround
使用相同的密钥定义新的Brush
资源:
<SolidColorBrush x:Key="MaterialDesignPaper" Color="#00479D"/>