在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>
对这里发生的事情有任何想法。
谢谢,
-埃德
解决方案
当尝试重用定义为静态资源的组件时,我也遇到了相同的问题。我发现的解决方法不是将控件声明为资源,而是定义设置所需属性的样式,并在每次需要时使用该样式实例化一个新控件。
编辑:当我们将控件分配给已经在另一个容器内部的容器时,会发生超出范围的异常。它也发生在许多其他情况下(例如,将样式应用于已经具有一种样式的对象),但是我相信这是情况。