2008-09-19 2 views
0

В настоящее время я тестирую Silverlight 2.0 Beta 2, и моя цель - определить элемент ресурса один раз, а затем повторно использовать его много раз в моем рендеринге. Этот простой пример определяет прямоугольник (myRect) в качестве ресурса, а затем я пытаюсь его повторно использовать дважды - с ошибкой:Повторное использование StaticResource в Silverlight 2.0

Значение атрибута {StaticResource myRect} находится за пределами допустимого диапазона. [Строка: 9 Позиция: 83]

BTW, этот образец отлично работает в 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> 

Любые мысли о том, что здесь происходит.

Спасибо,

- Ed

ответ

2

Я также столкнулся с той же проблемой при попытке повторно использовать компоненты, определенные как статические ресурсы. Обходной путь, который я нашел, не объявляет элементы управления как ресурсы, а определяет стили, устанавливающие все необходимые вам свойства, и каждый раз, когда вам нужно, создавать новый элемент управления с этим стилем.

EDIT: Исключительное исключение, которое вы получаете, возникает, когда вы назначаете элемент управления контейнеру, который уже находится внутри другого контейнера. Это также происходит во многих других сценариях (например, при применении стиля к объекту, который уже имеет его), но я считаю, что это ваш случай.

Смежные вопросы