WPFとSilverlight 3 BetaにあってSilverlight 2にないシリーズ「Styleプロパティに値を2回以上設定する」

XAML

<Grid>
    <Rectangle x:Name="BackgroundRect"/>
    <Button VerticalAlignment="Center" HorizontalAlignment="Center"
           Content="スタイルの適用" Click="Button_Click"/>       
</Grid>


Visual Basic
Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
    Dim MyStyle As New Style(GetType(Rectangle))
    MyStyle.Setters.Add(New Setter(Rectangle.FillProperty, New SolidColorBrush(Colors.Blue)))
    BackgroundRect.Style = MyStyle
End Sub


上記のようなXAMLとコードを記述し、実行してからボタンを2回押した場合、Silverlight 2では下記のようなExceptionが発生しますが、WPFSilverlight 3 Betaでは発生しません。





Silverlight 2ではStyleプロパティは1回しか値を設定できないという制限があったため、実行時に異なるスタイルを適用するということができませんでした。苦肉の策として動的にコントロールを生成しなおして新しいスタイルを設定するという方法が、ToolkitのThemeサンプルなどでは使われていました。


今回Silverlight 3 Betaでこの制限がなくなり、WPF同様に何回でもスタイルを設定できるようになっています。