偶然发现Visual Studio Ultimate 2012 RC的一个小bug。
MSDN上的Using based-on styles示例
http://msdn.microsoft.com/en-US/library/windows/apps/xaml/hh465381
1 <Page.Resources> 2 <Style x:Key="BasicStyle" TargetType="ContentControl"> 3 <Setter Property="Width" Value="100" /> 4 <Setter Property="Height" Value="30" /> 5 </Style> 6 <Style x:Key="ButtonStyle" TargetType="Button" BasedOn="{StaticResource BasicStyle}"> 7 <Setter Property="BorderBrush" Value="Orange" /> 8 <Setter Property="BorderThickness" Value="2" /> 9 <Setter Property="Foreground" Value="Orange" /> 10 </Style> 11 <Style x:Key="CheckBoxStyle" TargetType="CheckBox" BasedOn="{StaticResource BasicStyle}"> 12 <Setter Property="BorderBrush" Value="Green" /> 13 <Setter Property="BorderThickness" Value="2" /> 14 <Setter Property="Foreground" Value="Green" /> 15 </Style> 16 </Page.Resources> 17 18 <Grid Background="White"> 19 <Button Content="Button" Style="{StaticResource ButtonStyle}"/> 20 <CheckBox Content="CheckBox" Style="{StaticResource CheckBoxStyle}"/> 21 </Grid>
该段代码在 Visual Studio Ultimate 2012 RC 中会报错:Can only base on a Style with target type that is base type of this style's target type.
但实际是可以运行的。
因为Button和CheckBox都继承自ButtonBase,于是我把第二行代码改为<Style x:Key="BasicStyle" TargetType="ButtonBase">,这样就不报错了,同样也能运行。
毕竟是RC版,使用的时候还有一些其它问题,正式版应该会好很多。