我正在研究WPF应用程序。我有shared.xaml
中的默认样式的用户控件和主题样式(将不同样式的XAML文件耦合在一起)。
问题是我收到消息无法转换类型对象" System.Windows.Style"输入" System.Windows.Media.Brush" 在用户控件中共享样式包含如下:
Style="{StaticResource statusBar}"
注意:当我删除此行时,状态栏中没有错误且没有样式(因此问题出在该样式文件中)。
在shared.xaml
中<Style x:Key="statusBar" TargetType="{x:Type UserControl}">
<Setter Property="Background" Value="{DynamicResource StatusBarBackgroud}"/>
<Setter Property="FontFamily" Value="{DynamicResource FontFamilyStatusBar}"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Foreground" Value="{DynamicResource ForegroundStatusBar}"/>
</Style>
问题是前景(在LightTheme.xaml中共享文件指向它)
<Style x:Key="ForegroundStatusBar" >
<Setter Property="Control.Foreground" Value="LightBlue" />
</Style>
答案 0 :(得分:1)
Foreground
属性是Brush类型。当ForegroundStatusBar资源为{DynamicResource ForegroundStatusBar}
时,您无法在那里分配Style
。如果前景应该从基本样式继承,请在派生样式
<Style x:Key="statusBar" TargetType="{x:Type UserControl}"
BasedOn="{StaticResource ForegroundStatusBar}">
<Setter Property="Background" Value="{DynamicResource StatusBarBackgroud}"/>
<Setter Property="FontFamily" Value="{DynamicResource FontFamilyStatusBar}"/>
<Setter Property="FontWeight" Value="Bold"/>
<!--Foreground setter removed-->
</Style>
答案 1 :(得分:0)
试试这个:
<Style x:Key="ForegroundStatusBar"
TargetType="{x:Type UserControl}">
<Setter Property="Foreground" Value="LightBlue"></Setter>
</Style>