Повторное использование StaticResource в Silverlight 2.0
-
01-07-2019 - |
Вопрос
В настоящее время я тестирую 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>
Есть какие-нибудь мысли о том, что здесь происходит.
Спасибо,
-- Эд
Решение
Я также столкнулся с той же проблемой при попытке повторного использования компонентов, определенных как статические ресурсы.Обходной путь, который я нашел, заключается не в объявлении элементов управления как ресурсов, а в определении стилей, задании всех необходимых вам свойств и создании экземпляра нового элемента управления с этим стилем каждый раз, когда вам нужно.
РЕДАКТИРОВАТЬ:Исключение вне диапазона, которое вы получаете, возникает, когда вы назначаете элемент управления контейнеру, который уже находится внутри другого контейнера.Это также происходит во многих других сценариях (например, при применении стиля к объекту, у которого он уже есть), но я думаю, что это ваш случай.