0

現在、Silverlight 2.0 Beta 2 でテストしています。私の目標は、リソース要素を一度定義してから、レンダリングで何度も再利用することです。この単純な例では、四角形 (myRect) をリソースとして定義し、それを 2 回再利用しようとしましたが、次のエラーで失敗しました。

属性 {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>

ここで何が起こっているかについての考え。

ありがとう、

-- エド

4

1 に答える 1

2

静的リソースとして定義されたコンポーネントを再利用しようとしたときにも、同じ問題が発生しました。私が見つけた回避策は、コントロールをリソースとして宣言するのではなく、必要なすべてのプロパティを設定するスタイルを定義し、必要なたびにそのスタイルで新しいコントロールをインスタンス化することです。

編集:既に別のコンテナー内にあるコンテナーにコントロールを割り当てると、範囲外の例外が発生します。他の多くのシナリオでも発生します (既にスタイルを持っているオブジェクトにスタイルを適用するなど) が、これはあなたの場合だと思います。

于 2008-09-19T16:25:06.950 に答える