C# 为代码中的不同实例设置两次相同样式

C# 为代码中的不同实例设置两次相同样式,c#,silverlight-3.0,C#,Silverlight 3.0,我正在尝试重用形状数据,以便在代码中动态创建新的形状。基本上我想这样做,但在代码。情况如下: Path path = new Path(); path.Style = (System.Windows.Style)this.Resources["PathStyle"]; Path path2 = new Path(); path2.Style = (System.Windows.Style)this.Resources["PathSt

我正在尝试重用形状数据,以便在代码中动态创建新的形状。基本上我想这样做,但在代码。情况如下:

        Path path = new Path();
        path.Style = (System.Windows.Style)this.Resources["PathStyle"];
        Path path2 = new Path();
        path2.Style = (System.Windows.Style)this.Resources["PathStyle"];
但是我在第四行得到一个ArgumentException,它说“值不在预期范围内”

该代码位于SL 3应用程序的主控件中。 资源的XAML代码为

 <UserControl.Resources>
        <Style x:Key="PathStyle" TargetType="Path">
            <Setter Property="Data" Value="M63,171 L138,117 L168,189 L99,219"/>
            <Setter Property="Fill" Value="#FFF07E7E"/>
            <Setter Property="Height" Value="103"/>
            <Setter Property="Width" Value="106"/>
            <Setter Property="Stroke" Value="#FF000000"/>
            <Setter Property="Stretch" Value="Fill"/>
        </Style>
</UserControl.Resources>


有什么想法吗?

真奇怪。。。我不明白为什么它第一次工作,第二次失败。尝试使用中间变量,而不是两次访问资源:

    Style style = (System.Windows.Style)this.Resources["PathStyle"];
    Path path = new Path();
    path.Style = style;
    Path path2 = new Path();
    path2.Style = style;

看来这确实是SL3测试版中的一个bug,但有人找到了解决方法:

从7月12日开始,当SL3点击RTM时,这将不再是一个问题