=_=這其實是一個低級錯誤。。。可是最后還是我同事幫我發現的,很是慚愧,決定寫一篇隨筆用於記錄。。。
引用的地方是這樣寫的:
請注意他這邊是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,層級關系不一樣了。。。所以報錯