在Silverlight 2.0中重用StaticResource

时间:2020-03-06 14:26:02  来源:igfitidea点击:

我目前正在使用Silverlight 2.0 Beta 2进行测试,我的目标是一次定义一个资源元素,然后在渲染中多次重复使用它。这个简单的示例将矩形(myRect)定义为资源,然后尝试重用两次-失败并显示以下错误:

属性{StaticResource myRect}的值超出范围。 [线:9位:83]

顺便说一句,此示例在WPF中工作正常。

<UserControl x:Class="ReuseResourceTest.Page"
    xmlns="http://schemas.microsoft.com/client/2007" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="200" Height="200">
    <Canvas x:Name="LayoutRoot" Background="Yellow">
        <Canvas.Resources>
            <RectangleGeometry x:Key="myRect" Rect="25,50,25,50" />
        </Canvas.Resources>
        <Path Stroke="Black" StrokeThickness="10" Data="{StaticResource myRect}" />
        <Path Stroke="White" StrokeThickness="4"  Data="{StaticResource myRect}" />
    </Canvas>
</UserControl>

对这里发生的事情有任何想法。

谢谢,

-埃德

解决方案

当尝试重用定义为静态资源的组件时,我也遇到了相同的问题。我发现的解决方法不是将控件声明为资源,而是定义设置所需属性的样式,并在每次需要时使用该样式实例化一个新控件。

编辑:当我们将控件分配给已经在另一个容器内部的容器时,会发生超出范围的异常。它也发生在许多其他情况下(例如,将样式应用于已经具有一种样式的对象),但是我相信这是情况。