문제

저는 현재 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>

여기에 무슨 일이 일어나고 있는지에 대한 어떤 생각.

감사해요,

-- 에드

도움이 되었습니까?

해결책

정적 리소스로 정의된 구성 요소를 재사용하려고 할 때도 동일한 문제가 발생했습니다.내가 찾은 해결 방법은 컨트롤을 리소스로 선언하는 것이 아니라 필요한 모든 속성을 설정하는 스타일을 정의하고 필요할 때마다 해당 스타일로 새 컨트롤을 인스턴스화하는 것입니다.

편집하다:범위를 벗어난 예외는 이미 다른 컨테이너 안에 있는 컨테이너에 컨트롤을 할당할 때 발생합니다.이는 다른 많은 시나리오(예: 이미 스타일이 있는 개체에 스타일을 적용하는 등)에서도 발생하지만 이것이 귀하의 경우라고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top