سؤال

لديّ WPF UserControl ، والذي أستخدمه في التحكم في WinForms داخل ElementHostControl. ثم أبدأ نافذة WPF ، بينما لا يزال نموذج Windows مفتوحًا. إذا قمت بعد ذلك بإغلاق نافذة WPF ، وحاولت إضافة عنصر طفل إلى UserControl WPF ، فإنه يتعطل في "initializeComponent ()" (من عنصر الطفل) باستثناء:

"استثناء من الفرصة الأولى من النوع.

اكتشفت سبب حدوث ذلك ، لكنني لا أعرف كيفية حل المشكلة. إذا تركت هذا الرمز:

public static void EnsureApplicationResources()
    {
        if (Application.Current == null)
        {
            // create the Application object
            new Application();
            string assemblyName = System.IO.Path.GetFileNameWithoutExtension(
                Assembly.GetExecutingAssembly().ManifestModule.Name);

            // merge in your application resources
            Application.Current.Resources.MergedDictionaries.Add(
                Application.LoadComponent(new Uri("/KolonistenClient;component/KolonistenResourceDictionary.xaml", UriKind.RelativeOrAbsolute))
                as ResourceDictionary);
        }
    }

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

هل هناك أي طريقة للجمع بين أفضل ما في العالمين؟ الحفاظ على موارد بلدي ، مع منع التطبيق من الانهيار؟

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

المحلول

لقد قمت بحلها في نهاية المطاف عن طريق إضافة موارد الموارد في كل نافذة يدويًا من خلال XAML. وبهذه الطريقة ، يبقى UserControl في Winforms الخاص بي غير متأثر.

ما زلت لا أفهم بالضبط لماذا تحطمت رغم ذلك ، لسوء الحظ.

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/KolonistenClient;component/KolonistenResourceDictionary.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top