سؤال

أقوم حاليًا باختبار 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