XamlParseException باستخدام التحكم في مجموعة أدوات Silverlight في مزيج التعبير

StackOverflow https://stackoverflow.com/questions/2104434

سؤال

أواجه مشكلة غريبة في فتح UserControl في مزيج التعبير عند استخدام عنصر تحكم Silverlight Toolkit. يستخدم UserControl الخاص بي قائمة Toolkit's ListBoxDragDropTarget على النحو التالي:

<controlsToolkit:ListBoxDragDropTarget mswindows:DragDrop.AllowDrop="True" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">
        <ListBox ItemsSource="{Binding MyItemControls}" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <controlsToolkit:WrapPanel/>
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>
        </ListBox>
</controlsToolkit:ListBoxDragDropTarget>

كل شيء يعمل كما هو متوقع في وقت التشغيل ويبدو جيدًا في Visual Studio 2008. ومع ذلك ، عندما أحاول فتح UserControl في مزيج أحصل عليه XamlParseException: [السطر: 0 الموضع: 0 ولا أستطيع رؤية أي شيء في عرض التصميم. بشكل أكثر تحديدا يمزج الشكوى:

لا يمكن عرض عنصر "listboxdragdroptarget" بسبب مشكلة مع system.windows.controls.listboxdragdroptarget: عدم تطابق TargetType.

تطبيق Silverlight الخاص بي هو مرجع System.Windows.Controls.Toolkit من إصدار مجموعة أدوات نوفمبر 2009 ، وتأكدت من تضمين إعلانات مساحة الاسم هذه لـ ListBoxDragDropTarget:

xmlns:controlsToolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit"
xmlns:mswindows="clr-namespace:Microsoft.Windows;assembly=System.Windows.Controls.Toolkit"

إذا قمت بتعليق على WistBoxDragDropTarget Control Wrapper واترك فقط Listbox ، يمكنني رؤية كل شيء على ما يرام في طريقة عرض التصميم بدون أخطاء. علاوة على ذلك ، أدركت أن هذا يحدث مع مجموعة متنوعة من عناصر التحكم في مجموعة أدوات Silverlight لأنه إذا قمت بتعليق ListBoxDragDropTarget واستبداله به

<controlsToolkit:BusyIndicator />

يحدث نفس الخطأ الدقيق في المزيج. ما هو أكثر غرابة هو أنه إذا بدأت تطبيق Silverlight جديد تمامًا في مزيج ، فيمكنني إضافة عناصر مجموعة الأدوات هذه دون أي نوع من الأخطاء ، لذلك يبدو أن شيئًا غبيًا يحدث مع إشارات مشروعي إلى مجموعات مجموعة الأدوات.

أنا متأكد من أن هذا له علاقة بتحميل الأنماط الافتراضية لعناصر التحكم في مجموعة الأدوات من generic.xaml ، لأن الخطأ له علاقة مع TargetType وربما يحاول المزيج تحميل الأنماط الافتراضية.

هل واجه أي شخص هذه المشكلة من قبل أو لديه أي أفكار حول ما قد تكون مشكلتي؟

هل كانت مفيدة؟

المحلول

مرحبًا ، كان لدينا نفس المشكلة تمامًا ، قمنا بحلها عن طريق التحقق من المراجع في المشروع التي كانت تواجه هذه المشكلة. يجب أن تكون جميع مجموعات مجموعة الأدوات المشار إليها في نفس الدليل على القرص.

مرجع مشروعنا إلى system.windows.controls.toolkit.dll دائمًا "قفز" إلى المسار البطني الذي كان يسبب مشكلتنا. لقد حلنا عن طريق تحرير ملف المشروع في Notepad ++ (أو أي من محرر النص المفضل لديك) ونقسم المتشددين حيث يمكن أن يجد التجميع.

أتمنى أن يساعدك هذا.

نصائح أخرى

للحصول على Visual Studio (ربما تمتزج أيضًا) ، تحتاج إلى إضافة إشارة إلى:

System.Windows.Controls.Toolkit.Internals.dll

"C: Program Files Microsoft SDKS Silverlight V4.0 Toolkit Apr10 bin system.windows.controls.toolkit.internals.dll"

أنا أستخدم مجموعة أدوات Silverlight 5 ولدي XamlParseException عند استخدام BusyIndicator التحكم في مجموعة الأدوات في مزيج التعبير لـ SL 5 ، لم تساعد جميع الحلول المذكورة أعلاه ، لكنني وجدت حلولًا آخر ، إنه متسخ إلى حد ما ولكنه يسمح لي بالتقديم BusyIndecator العمل في مزيج التعبير ،

  1. اشتق من السيطرة

    public class BusyIndicatorEx : BusyIndicator
    {
        public BusyIndicatorEx()
        {
            this.DefaultStyleKey = typeof(BusyIndicatorEx);
        } 
    }
    
  2. إنشاء نمط للتحكم المشتق (فقط نسخ النمط من BusyIndicator رمز المصدر للسمات/generic.xaml ، وتغيير نوع الهدف إلى local:BusyIndicatorEx)

واجهت نفس المشكلة التي تم حلها من خلال إدخال مرجع وهمية في الكود وراء لوحة التفاف.

أعلم أنه قليل من c ++ y ، لكن يمكنني أن أتخيل ذلك لأن لدينا إشارة غير مباشرة إلى لوحة التفاف داخل قالب وليس في صفحة المستوى العلوي حتى لا يعرف المحمل ما يجب تحميله عند التهيئة. أحب حقًا فهم السبب الدقيق ، رغم ذلك.

لقد أشرت للتو System.Windows.Controls.Toolkit وتقديم العضو التالي في الكود وراء:

System.Windows.Controls.WrapPanel _dummy;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top