Visual Studio Ultimate 2012 RC win8 Metro应用的一个小bug-样式继承

偶然发现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版,使用的时候还有一些其它问题,正式版应该会好很多。

 

 

posted @ 2012-06-27 11:49  成宇佳  阅读(424)  评论(0编辑  收藏  举报