WPF 资源xxx具有不兼容的类型

=_=这其实是一个低级错误。。。可是最后还是我同事帮我发现的,很是惭愧,决定写一篇随笔用于记录。。。
引用的地方是这样写的:

请注意他这边是Template="***";
那么你资源文件中正确的写法应该是:
<!--textbox样式-->
<ControlTemplate x:Key="TextBoxTemplate1" TargetType="{x:Type TextBox}">
<Border x:Name="Bd"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
CornerRadius="5">
<ScrollViewer x:Name="PART_ContentHost"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" TargetName="Bd" Value="#FF4176D3"/>
<Setter Property="BorderThickness" TargetName="Bd" Value="1"/>
<Setter Property="Foreground" Value="#FF4176D3"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
如果你把这个控件模板包在style里面就是这样写:
<Style x:Key="TextBoxTemplate1" TargetType="{x:Type TextBox}"> <Setter Property="Template"> <Setter.Value> <!--textbox样式--> <ControlTemplate> <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="5"> <ScrollViewer x:Name="PART_ContentHost"/> </Border> <ControlTemplate.Triggers> <Trigger Property="IsEnabled" Value="False"> <Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/> <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> </Trigger> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="BorderBrush" TargetName="Bd" Value="#FF4176D3"/> <Setter Property="BorderThickness" TargetName="Bd" Value="1"/> <Setter Property="Foreground" Value="#FF4176D3"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style>
就会报错。。。原因很简单你的样式文件是个style,而你引用的地方是个Template,层级关系不一样了。。。所以报错

浙公网安备 33010602011771号