Style BasedOn突然不起作用

时间:2013-07-04 15:32:43

标签: .net wpf styles wpf-controls

这些简单的风格刚刚停止运作。他们一直工作到今天。

<Style x:Key="textColumnElementStyle" TargetType="{x:Type TextBlock}" BasedOn="{StaticResource {x:Type TextBlock}}">
    <Setter Property="Padding" Value="5,1" />
</Style>

<Style x:Key="textColumnEditingElementStyle" TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
    <Setter Property="Padding" Value="2,0" />
</Style>

这两个都显示BasedOn属性的错误。

The resource "{x:Type TextBlock}" could not be resolved.
The resource "{x:Type TextBox}" could not be resolved.

如果我复制并选择其中一个样式,那么粘贴样式就没有错误。

<Style x:Key="noErrorOnThisStyle" TargetType="{x:Type TextBlock}" BasedOn="{StaticResource {x:Type TextBlock}}">
    <Setter Property="Padding" Value="5,1" />
</Style>

<Style x:Key="textColumnElementStyle" TargetType="{x:Type TextBlock}" BasedOn="{StaticResource {x:Type TextBlock}}">
    <Setter Property="Padding" Value="5,1" />
</Style>

<Style x:Key="textColumnEditingElementStyle" TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
    <Setter Property="Padding" Value="2,0" />
</Style>

1 个答案:

答案 0 :(得分:1)

实际上在您的情况下,不需要BasedOn属性。只需写下

<Style x:Key="textColumnElementStyle" TargetType="{x:Type TextBlock}">
    <Setter Property="Padding" Value="5,1" />
</Style>

<Style x:Key="textColumnEditingElementStyle" TargetType="{x:Type TextBox}">
    <Setter Property="Padding" Value="2,0" />
</Style>

当未设置BasedOn时,BasedOn指向TargetType属性指定的类型的默认样式。

此致

克劳德